Cでmallocを試していましたが、メモリが割り当てられた後にmallocがいくらかのスペースを無駄にしていることがわかりました。以下は、私は、次の絵の右中央にはmallocCのmallocメモリ割り当て方式
#include <stdlib.h>
#include <string.h>
int main(){
char* a;
char* b;
a=malloc(2*sizeof(char));
b=malloc(2*sizeof(char));
memset(a,9,2);
memset(b,9,2);
return 0;
}
をテストするために使用されるコードの一部を使用すると、メモリの内容を見ることができます(わかりやすくするために新しいタブで画像を開く)であり、0x804b008が指すアドレスです変数 'a'によって表され、0x804b018は変数 'b'によって指し示されるメモリです。 0x804b00aから0x804b017までの間に何が起こっていますか?私が2*sizeof(char)
バイトのメモリの代わりに3*sizeof(char)
を割り当てようとしても、メモリのレイアウトは同じです!それで、私が紛失しているものがありますか?
以下の答えに加えて、定義によってsizeof(char)= 1ということを指摘しておく価値があるので、それを乗算する点はありません。 –
@richardkettlewellそうですが、私は読みやすさのために何らかの方法でそれを使う習慣を作ったのです – nagavamsikrishna