可能重复:
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;
}
答案 0 :(得分:6)
如果对象有父对象,则无需释放它 - 它将由QT内存管理系统自动完成。
在您的具体示例中,您确实需要删除您的对象,因为它没有父对象。即使您不这样做,也会在app.exec();
返回时由您的操作系统完成。
有关qt's object trees的文档:
QObjects在对象树中组织自己。当您使用另一个对象作为父对象创建QObject时,它将添加到父对象的children()列表中,并在父对象被删除时被删除。
答案 1 :(得分:4)
如果QLabel有父级,则会删除其父级删除,否则您应该自行删除。 更多:http://doc.qt.digia.com/qt/objecttrees.html