我目前正在 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 )?

有帮助吗?

解决方案

你可以这样做,例如你的 关闭事件(). 。或者,如果您使用 Qt::WA_DeleteOnClose 为您 小部件属性, ,小部件在关闭时将被删除,这意味着您可以在析构函数中放置一些清理例程。

其他提示

考虑使用 raii习惯明智的指针 而且您不需要记住何时发布分配的内存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top