【发布时间】:2016-02-04 00:06:40
【问题描述】:
据我了解,当您在使用的堆上分配对象时
Object* dynamicobject = new Object();
当我调用 delete 我去
delete dynamicobject
我很困惑,因为我删除了指向该对象实例的指针,但按照我的思路,您需要实际删除内存本身中的对象,这需要您取消引用指针,例如 删除 *动态对象 但这是不正确的。 如果要更改指针指向的对象,则需要取消引用,我假设同样适用于删除,但似乎只能删除指针。
【问题讨论】:
-
delete运算符取消引用指针以找到要回收的内存。 -
请注意
new Object();和new Object;是不同的 -
为了删除内存中的实际对象,你需要知道对象在哪里。换句话说,你需要一个指向它的指针。
-
如果你想销毁对象本身而不归还内存,你会这样做
dynamicobject->~dynamicobject()。 -
@EdHeal 两者有何不同?
标签: c++ dynamic-memory-allocation