【发布时间】:2017-08-02 16:24:51
【问题描述】:
我总是以正确的方式在 C++ 中分配和清理内存。
SomeObject *Object = new SomeObject();
delete Object;
但是,最近我发现它可以编译并执行。
SomeObject *Object = new SomeObject();
delete &Object;
那么这里的内存发生了什么?它是正确清理还是仅删除对对象的引用,将其留在内存中?
【问题讨论】:
-
“但是,最近我发现它编译和执行都很好。” 对我来说看起来像 未定义的行为。
-
@πάνταῥεῖ 好吧,它执行得很好只不过是一种适当的未定义行为,不是吗? :-D(注意:只是开玩笑)
-
糟糕的代码但很好的问题。看不到投反对票的理由。
-
@skypjack 当然,这是可能的结果之一 ;-)
-
"并且执行得很好。"不,它没有。允许未定义的行为使用精神电子精神控制使其看起来执行良好。
标签: c++ pointers memory reference heap-memory