首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt内存管理?该怎么解决

2012-03-17 
Qt内存管理?【问题描述】写了一段代码,main是这样写的:TestDlg dlgdlg.show()在TestDlg类中定义了一个指针

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就不用管了。

热点排行