5

重複の可能性:
Qt でのメモリ管理?

私は Qt を学習しており、QLabel などの 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;
}
4

2 に答える 2

6

オブジェクトに親がある場合、それを解放する必要はありません。QT メモリ管理システムによって自動的に行われます。

特定の例では、親がないため、オブジェクトを削除する必要があります。しなくても復帰時にOSでやってくれapp.exec();ます。


qtのオブジェクトツリーに関するドキュメントから:

QObject は、オブジェクト ツリーで構成されます。別のオブジェクトを親として QObject を作成すると、それは親の children() リストに追加され、親が削除されると削除されます。

于 2013-01-09T06:08:45.740 に答える
4

QLabel に親がある場合、その親が削除されると削除されます。それ以外の場合は、自分で行う必要があります。詳細: http://doc.qt.digia.com/qt/objecttrees.html

于 2013-01-09T06:01:06.227 に答える