私のmain.c
内容:
int main(int argc, char **argv)
{
void * tmp = malloc(8);
((double *)tmp)[0] = 100;
((double *)tmp)[1] = 102;
printf("tmp %p\n", tmp);
printf("tmp[0] %d %f %p\n", sizeof(((double *)tmp)[0]), ((double *)tmp)[0], &((double *)tmp)[0]);
printf("tmp[1] %d %f %p\n", sizeof(((double *)tmp)[1]), ((double *)tmp)[1], &((double *)tmp)[1]);
return EXIT_SUCCESS;
}
=========================OUTPUT=========================
tmp 0xee8010
tmp[0] 8 100.000000 0xee8010
tmp[1] 8 102.000000 0xee8018
========================================================
まず、変数 tmp に 8 バイトのメモリを割り当て、アドレス 0xee8010 に番号 100 を割り当てました。
((double *)tmp)[0] = 100;
また、番号 102 を未割り当てメモリ 0xee8018 に割り当てます。
((double *)tmp)[1] = 102;
しかし、ビルド時でも実行時でもエラー メッセージは表示されませんでした。なぜだめですか?
これを理解するのを手伝ってください。ありがとうございました。