可能重复:
(POD)释放内存:删除[]是否等于删除?
当我被教授C++时,这是很久以前的事了.我被告知从不使用,delete但delete[]因为delete[]在单个对象上执行将相当于delete.我不知道是不是太信任老师了,这是真的吗?
有没有理由打电话delete而不是delete[]?
我已经在SO中扫描了可能相关的问题,但没有找到任何明确的答案.
在C++中,何时将对象定义为"超出范围"?
更具体地说,如果我有一个单链表,那么将单个列表节点对象定义为"超出范围"?或者,如果一个对象存在并且被一个变量引用ptr,那么在删除引用或指向另一个对象时,该对象被定义为"超出范围"是否正确?
更新:假设一个对象是一个具有已实现的析构函数的类.在对象退出范围的那一刻,是否会调用析构函数?
if (myCondition) {
Node* list_1 = new Node (3);
Node* list_2 = new Node (4);
Node* list_3 = new Node (5);
list_1->next = list_2;
list_2->next = list_3;
list_3->next = null;
}
Run Code Online (Sandbox Code Playgroud)
换句话说,通过list_1在此行之后调用其析构函数来指向Node :
Node* list_1 = new Node (3);
Run Code Online (Sandbox Code Playgroud)
?