Malloc在内存中分配相同的地址?

时间:2014-10-02 05:54:38

标签: c malloc

我发现了与我相似的问题,但我仍然无法弄清楚为什么我的代码按原样行事。

我有一个名为“rectangle”的结构,这是我试图运行的代码:

Rectangle *newRect = (Rectangle *)malloc(sizeof(Rectangle));
Rectangle *newRect2 = (Rectangle *)malloc(sizeof(Rectangle));
printf("rect1: %p rect2: %p",newRect,newRect2);

它输出两个相同的地址,我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可能无法编译并显示所有警告,并且忘记包含stdlib.h。然后,某些编译器将malloc解释为返回int而不是void*。在64位架构上,这会丢失重要信息,因此最终您会在打印中看到相同的值。

请勿转发malloc