【发布时间】:2013-01-17 15:11:43
【问题描述】:
我的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;
但是我在构建时和运行时都没有看到任何错误消息。为什么不呢?
请帮助我理解这一点。 谢谢。
【问题讨论】:
-
标题未正确写入。编辑它
-
我在我的机器上查看了
0xee8010,没有任何100 -
哦,我多么喜欢一个人花这么多精力去问......