我的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 个字节的内存,并将数字 100 分配给地址 0xee8010。
((double *)tmp)[0] = 100;
我还将数字 102 分配给未分配的内存 0xee8018。
((double *)tmp)[1] = 102;
但是我在构建时和运行时都没有看到任何错误消息。为什么不?
请帮助我理解这一点。谢谢你。