举个例子,刚学Qt的例子
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel *label = new QLabel;
label->show();
a.exec();
return 0;
}
这里面的label是new出来的,那么需要delete吗?
我的疑问是,在Qt中什么时候需要delete呢?
------解决方案--------------------
就这个例子来讲,根本不需要这样,内存是可控的
------解决方案--------------------
很显然,楼主不是困惑的这里的代码,而是困惑QT里面用的delete太少了。
QT里面使用了QObject来管理子对象。形成了所谓的对象树。只要是QObject的子类,就可以指定一个parent对象,当这个parent销毁的时候,可以自动销毁子对象。所以你在使用QT的时候几乎很少使用手动delete。因为只需要管理parent对象就行了。QT中的例子一般是这样的。(改一下你的代码)
int main(int argc, char *argv[]){
QApplication a(argc, argv);
QWidget wid;
QLabel *label = new QLabel(&wid);
wid.show();
a.exec();
return 0;}
因为wid是label的parent,当程序退出的时候wid销毁时,会调用label的析构函数的,所以达到了析构label的目的。
------解决方案--------------------
我之前也一直纠结于这个问题,后来总结了一下,或许有点帮助http://blog.csdn.net/envenler/article/details/8020064