C++中为什么析构函数没有被调用


#include<iostream>
#include<string.h>
using namespace std;
class String{
    char *text;//一个char类型的指针
    public:
        String(const char *str);//构造函数
        ~String(){
            cout << "enter 'String::~String',text=>" << text << endl;
            delete[] text;
        }//析构函数
        void printStr() { cout << text << endl; }
        
};

String::String(const char*str){
    cout << "enter 'String::String',str=" << str << endl;
    text = new char[strlen(str) + 1];
    strcpy(text, str);
}

int main(){
    String str1("ald11");
    String str2("s22g22");
    str1.printStr();
    str2.printStr();
    cout << "ending main!" << endl;
    system("pause");
    return 0;
}

img

因为你程序还没退出啊。变量还在生命周期内,当然不会调用析构函数。
执行到system("pause")代码,程序暂停了,还在main函数内,所以变量还没被系统回收