当前位置: 代码迷 >> QT开发 >> Qt内存管理?该怎么解决
  详细解决方案

Qt内存管理?该怎么解决

热度:171   发布时间:2016-04-25 05:08:09.0
Qt内存管理?
【问题描述】
写了一段代码,main是这样写的:
TestDlg dlg;
dlg.show();
在TestDlg类中定义了一个指针:
class TestDlg : public QDialog
{
....
private:
QPushButton *pushButton_close;
...
};
在TestDlg构造函数中,new了一个对象如下:
pushButton_close = new QPushButton;
在析构函数中:
delete pushButton_close。

【问题】
(1) 这段代码在Windows XP中运行没有报错。但在Qt 模拟器中运行却报内存的错误。去掉delete pushButton_close就没问题了。这是什么原因呢?
(2) 看了很多代码new了一个对象,确实没有用delete。有人说销毁一个父对象,与此同时子对象就销毁了。那是不是只要在main中,采用TestDlg dlg而不是TestDlg *dlg = new TestDlg;子对象new了以后,就不用delete?
(3) Qt中,到底什么时候需要delete?


------解决方案--------------------
非动态分配当然不要delet,你写了就是错的。
父窗口销毁,当然子窗口就自动析构。Qt就是这样的。
------解决方案--------------------
有parent的你不用管,没有parent而且还是你new出来的就需要delete。
------解决方案--------------------
只要继承了QObject,再给它制定一个parent就不用管了。
  相关解决方案