Qt对象树与内存泄漏

2023-12-15 11:57:51

背景:最近怀疑自己写的程序内存泄漏太严重,学习一下相关知识。

代码和理解学习自:

Qt中的内存泄漏_qt内存泄漏-CSDN博客

?Qt 对象树-CSDN博客

(感谢)?

#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QPushButton btn("button");
    QWidget widget;

    btn.setParent(&widget);
    widget.show();

    return a.exec();
}

这样写程序会崩溃

C++规定了析构顺序应该按照其创建顺序的相反过程

所以先析构widget,再析构btn

在析构widget时,根据Qt的对象树自动析构原理,btn已经被析构了

不可以调用两次析构函数

#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget widget;
    QPushButton btn("button");
    btn.setParent(&widget);
    widget.show();

    return a.exec();
}

这样写就可以了!

文章来源:https://blog.csdn.net/weixin_51883798/article/details/135009736
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。