专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > QT开发

Qt内存管理?该怎么解决

发布时间:2010-05-30 21:30:58 文章来源:www.iduyao.cn 采编人员:星星草
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就不用管了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: