Qt オブジェクトの寿命は?
そのような:
QTcpSocket *socket=new QTcpSocket();
ソケットはいつ破棄されますか? 使うべきか
delete socket;
違いはありますか:
QTcpSocket socket;
これについての深い情報は見つかりませんでした。コメントやリンクは大歓迎です。
Qt オブジェクトの寿命は?
そのような:
QTcpSocket *socket=new QTcpSocket();
ソケットはいつ破棄されますか? 使うべきか
delete socket;
違いはありますか:
QTcpSocket socket;
これについての深い情報は見つかりませんでした。コメントやリンクは大歓迎です。
Qt は親子関係を使用してメモリを管理します。QTcpSocket
作成時にオブジェクトに親を指定すると、親がオブジェクトのクリーンアップを処理します。親は、たとえば、ソケットを使用する GUI ウィンドウにすることができます。ウィンドウが終了すると (つまり、閉じられると)、ソケットは終了します。
親なしで行うことはできますが、実際にdelete
はオブジェクトを手動で作成する必要があります。
個人的には、慣用的な Qt に固執し、すべてのオブジェクトを親子ツリーにリンクすることをお勧めします。
で割り当てられたオブジェクトは、new
で解放する必要がありますdelete
。
ただし、Qt では、ほとんどのオブジェクトは、コンストラクターへの引数として指定する親を持つことができます。親が削除されると、子オブジェクトは自動的に削除されます。
何らかの理由で親を渡したくない場合 (ソケット オブジェクトを所有する意味のある QObject がないため)、QSharedPointer を使用して有効期間を管理することもできます。