我发现了与我相似的问题,但我仍然无法弄清楚为什么我的代码按原样行事。
我有一个名为“rectangle”的结构,这是我试图运行的代码:
Rectangle *newRect = (Rectangle *)malloc(sizeof(Rectangle));
Rectangle *newRect2 = (Rectangle *)malloc(sizeof(Rectangle));
printf("rect1: %p rect2: %p",newRect,newRect2);
它输出两个相同的地址,我做错了什么?
谢谢!
答案 0 :(得分:2)
您可能无法编译并显示所有警告,并且忘记包含stdlib.h
。然后,某些编译器将malloc
解释为返回int
而不是void*
。在64位架构上,这会丢失重要信息,因此最终您会在打印中看到相同的值。
请勿转发malloc
。