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 回答