【发布时间】:2020-02-24 17:52:54
【问题描述】:
Class example
{
};
int main()
{
Example* pointer1 = new example();
Example* pointer2;
pointer2 = pointer1;
delete pointer1;
}
我应该删除指针 2 吗?我认为它在堆栈中,我不需要删除。
【问题讨论】:
-
不,它指向的内存已经被删除指针1释放了
-
将它分配给 null_ptr 可能不会有什么坏处,因为如果在删除后执行任何其他操作,它将是一个悬挂指针。
-
如果你
new它,你应该delete它。一次。如果您传递所有权,您将传递删除它的责任,而传递者正在放弃该责任。 (但最好使用std::unique_ptr或std::shared_ptr在代码中更明确地表达所有权。) -
不,
pointer2将是一个悬空指针。您需要自己将其设置为nullptr(如果这对您的代码很重要)。 -
您不删除指针 - 您使用指针删除对象。
标签: c++ dynamic-memory-allocation delete-operator