请考虑以下代码:
#include <iostream>
class A{
public:
~A() {}
};
int main(){
A *p = new A();
p->~A();
return 0;
}
我想知道由A
指向的对象p
的内存是否已释放,或者我们必须调用delete p;
[分配内存到类型A
的对象无关紧要,释放分配的内存不是A'
的destructor角色,也不应该显式调用它。它只是一个成员函数,当对象被销毁时会被调用。调用delete
后,它将被销毁。
替换:
p->~A();
with:
delete p;
现在您的对象被破坏,分配的内存被释放。