调用析构函数释放动态分配的内存

wat*_*tou 0 c++ destructor dynamic-memory-allocation

让我们考虑一下这段代码:

#include <iostream>
class A{
public:
        ~A() {}
};
int main(){
        A *p = new A();
        p->~A();
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道所A指向的对象的内存p是否被释放或者我们必须调用delete p;

Dav*_*rtz 5

内存没有被释放。析构函数销毁对象但不释放内存。怎么可能?您可以销毁动态分配的对象、堆栈中的对象、全局对象等。析构函数不知道需要什么来释放内存。