ylww

随笔仅作学习记录,请辩证参考!!!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首先,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

posted on 2023-02-01 23:40  理想主义者光芒万丈  阅读(69)  评论(0)    收藏  举报