【发布时间】:2014-11-27 02:33:21
【问题描述】:
我发现了与我类似的问题,但我仍然无法弄清楚为什么我的代码会以这种方式运行。
我有一个名为“矩形”的结构,这是我要运行的代码:
Rectangle *newRect = (Rectangle *)malloc(sizeof(Rectangle));
Rectangle *newRect2 = (Rectangle *)malloc(sizeof(Rectangle));
printf("rect1: %p rect2: %p",newRect,newRect2);
它为他们两个输出相同的地址,我做错了什么?
谢谢!
【问题讨论】:
-
你不需要演员表
-
您要么 a) 没有运行您发布的确切代码,要么 b) 在第二次调用
malloc之前释放newRect。 -
请向我们展示表现出这种行为的 SSCCE:sscce.org
-
@o11c - 你在 C++ 中使用 new 而不是 malloc。 C 不需要演员表,也不是好的做法
-
@o11c 不,这不是一个好习惯。 C++ 中的 C 类型转换也不是好的做法。