首先,new一个对象会调用对象的构造函数。
delete一个对象会调用对象的析构函数。(准确来讲是delete一个对象指针)
我们对delete进行展开,看下面一个例子:

delete c做了两步工作:1.调用析构函数 2.通过析构函数释放了这个对象占据的空间。(如果析构函数中没有释放a,那么delete c会导致内存泄漏)。
这里,要注意的是,针对new A, 先有delete,之后才析构。有先后关系。
对象树机制会自动调用析构函数其实就是会自动delete.
子窗体的构造函数中初始化了父窗体的parent,当关闭子窗体时不会调用析构函数,
只有关闭父窗体时,才会调用子窗体的析构函数, (若是子窗体定义在栈中,则作用域结束,是会自动析构的,父窗体一般定义在栈中。)
解决办法如下
子窗口构造函数中添加:setAttribute(Qt::WA_DeleteOnClose) //子窗口关闭时销毁该类的实例对象。
子窗体一般都是在堆空间中,使得生命周期长,show的时间也长;主窗体一般定义在栈中,通过模态运行:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
标准对话框(一些静态方法),在显示过后是会释放的。(源码内实现)
*
父子窗口内存释放问题,转载:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Fdog_/article/details/117854102
————————————————
版权声明:本文为CSDN博主「花狗Fdog」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fdog_/article/details/117854102
模态问题:https://zhuanlan.zhihu.com/p/484482786
浙公网安备 33010602011771号