C ++ QT内存分配

时间:2013-01-09 05:51:33

标签: c++ qt

  

可能重复:
  Memory management in Qt?

我一直在学习Qt,如果应该删除指向Q对象等Q对象的指针,我们会进行讨论。 Qt是否对指向Qt对象的指针有自动内存管理,还是必须手动删除它们?

离)

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{

 QApplication app(argc, argv);

 QLabel *label = new QLabel("Im Tough.");

 label->show();

 int result = app.exec();

 //would this be necessary or would QT handle this automatically?
 delete label;

 return result;
}

2 个答案:

答案 0 :(得分:6)

如果对象有父对象,则无需释放它 - 它将由QT内存管理系统自动完成。

在您的具体示例中,您确实需要删除您的对象,因为它没有父对象。即使您不这样做,也会在app.exec();返回时由您的操作系统完成。


有关qt's object trees的文档:

  

QObjects在对象树中组织自己。当您使用另一个对象作为父对象创建QObject时,它将添加到父对象的children()列表中,并在父对象被删除时被删除。

答案 1 :(得分:4)

如果QLabel有父级,则会删除其父级删除,否则您应该自行删除。 更多:http://doc.qt.digia.com/qt/objecttrees.html