为什么不用C++调用Destructor?

msc*_*msc 1 c++ constructor destructor

我在研究C++概念.我在构造函数和Destractor概念中感到困惑.编译器在退出程序时将隐式调用析构函数.但在我的程序中,只有构造函数调用.

#include <iostream>
using namespace std;

class A
{
        int i;
public:
        A()
        {
                cout<<"Constructor call"<<endl;
        }
        ~A()
        {
                cout<<"Destructtor call"<<endl;
        }
};

int main()
{
        A *a = new A();
}
Run Code Online (Sandbox Code Playgroud)

输出:

Constructor call
Run Code Online (Sandbox Code Playgroud)

所以,我有一个问题:为什么析构函数在退出程序时不会被编译器隐式调用?

eer*_*ika 7

为什么析构函数在退出程序时不会被编译器隐式调用?

因为动态分配的对象不会自动销毁.这就是指定语言的方式.跟踪动态对象的销毁将需要运行时/内存开销.

解决方案:不要泄漏动态分配的对象.