この2つの違い
char tmp1[10]; char *tmp2 = malloc(10);
- tmp1は長さMAXNUM(cは1つ1バイトなのでMAXNUMバイト)の配列
- tmp2はMAXNUMバイトの領域を指すポインタ
printf("%d\n", sizeof(tmp1)); printf("%d\n", sizeof(*tmp2));
結果は前者は10、後者は1。
tmp2はまだ領域を確保しているだけなので、char1つ分しかサイズがない。
ここまではok。
で、エラーを出すつもりで
tmp2[100] = 10;
とやってみた。
エラーが出ない。あれ?
char *tmp2 = malloc(10);
って「char型10個分のメモリ確保するよ」って意味だよな…
for使ってみたら100個格納できてるし。
うーん。。。
まだ理解が足りない様子。