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

在窗口下用new 新建一些按钮,关闭该窗口时要不要用delete释放掉

2013-01-23 
在窗口上用new 新建一些按钮,关闭该窗口时要不要用delete释放掉啊在窗口上用new 新建一些按钮,关闭该窗口

在窗口上用new 新建一些按钮,关闭该窗口时要不要用delete释放掉啊
在窗口上用new 新建一些按钮,关闭该窗口时要不要用delete释放掉啊,是不是窗口关闭时,析构函数会自动释放该窗口所有内存
[解决办法]
QLabel *myLabel = new QLabel(this);
就不用管了。
[解决办法]
Qt有个规则是 父亲删除了就会删除他的孩子。

new QLabel(this);
表示的是 你这个Qlabel的父亲就是外面那个窗口。。


所以如果你 new QLabel();这样写。。就必须要delete哈。
[解决办法]

引用:
自动释放有前提:必须是QObject的子类,必须设定了父对象。

好的编程习惯就是有new 就有delete,

析构函数什么都不写,那内存如何释放,只有把new出来的对象delete掉,所占用的内存才会释放。

不是析构函数什么都不写,而是在后面都被销毁了,这个是Qt的内存管理机制,当然必须是QObject的子类,new的时候要有parent,如果具备这两项,Qt会帮你delete。
[解决办法]
虽然如果你写成new QLabel(this);
delete 
依然不会是释放,直到最高阶的父类被释放。
[解决办法]
引用:
我是创建了两个界面,界面可以来回切换,每次切换80次就挂掉了,我想应该是内存泄露,析构函数是这么写的,我就是把我用new建立的组件,布局,全部用delete在下面的大括号内释放掉,感觉没什么用 啊 
QDesk::~QDesk()
{
    delete lab1;
    delete lab2;
.........

}


1、QDesk的析构函数执行了吗?
2、如果不满足Qt内存自动回收的条件的话,QDesk new出来的对象delete了吗?
[解决办法]
引用:
引用:

自动释放有前提:必须是QObject的子类,必须设定了父对象。

好的编程习惯就是有new 就有delete,

析构函数什么都不写,那内存如何释放,只有把new出来的对象delete掉,所占用的内存才会释放。

不是析构函数什么都不写,而是在后面都被销毁了,这个是Qt的内存管理机制,当然必须是QObject的子类,new的时候要有parent,如果具……


严格来说,虽然Qt有自己的内存回收机制,但最好能自己主动delete,举个例子,如果是服务器之类的程序,那就需要对内存有严格的控制,而不是依赖系统的内存回收机制。
[解决办法]
 你父类不存在了、Qt半自动化内存管理机制、会删除他的子类
[解决办法]
引用:
我每次调用B界面的时候,都会把A界面关闭,调用A界面,把B界面关闭,是不是关闭时自动会执行析构函数,析构函数内部的话就会执行delete函数,我是这么理解的,不知道对吗


如果你点窗口上的X来关闭窗口,执行的不是析构函数,而是accept操作。
还是那句话LZ要明白析构函数什么时候执行。

热点排行