C++ QT内存分配

lam*_*bda 5 c++ qt

可能重复:
Qt中的内存管理?

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

EX)

#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;
}
Run Code Online (Sandbox Code Playgroud)

BЈо*_*вић 6

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

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


从有关qt的对象树的文档:

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