1

現在、Qt、OpenCv、Mac os X でプログラムを作成しています。メイン ウィンドウがあり、別のウィンドウが開いています。コンストラクターで新しいウィンドウにいくつかのマトリックス クローンを渡します。

ImageWindow *imageWin = new ImageWindow( 
   cvCloneMat(getData->getMasterRawMat(1)), 
   cvCloneMat(getData->getMasterRawMat(2)), 
   cvCloneMat(getData->getMasterRawMat(3)), 
   cvCloneMat(getData->getMasterRawMat(4)) );
imageWin->show();

新しいウィンドウが閉じられたときに、どのように割り当てを解除しますか (どこで cvReleaseMat を呼び出しますか)?

4

2 に答える 2

8

たとえば、 closeEvent()でこれを行うことができます。または、ウィジェット属性にQt :: WA_DeleteOnCloseを使用すると、ウィジェットは閉じられたときに削除されます。つまり、デストラクタにいくつかのクリーンアップルーチンを配置できます。

于 2009-03-23T02:14:33.203 に答える
1

RAII イディオムスマート ポインターの使用を検討すると、割り当てられたメモリをいつ解放するかを覚えておく必要がなくなります。

于 2009-03-23T11:17:58.840 に答える