PV *_*ipa 3 c++ opencv release image vector
使用OpenCV 2.2,我试图释放内存,调用释放到std :: vector中的Mat图像,例如:
std::vector < Mat > matVec;
Run Code Online (Sandbox Code Playgroud)
但是,似乎
for (int k = 0; k < matVec.size(); k++)
{
matVec[k].release();
}
Run Code Online (Sandbox Code Playgroud)
没有发布任何内存(但它仍然编译).
我知道OpenCV 2.2中有新的内存管理,但我无法发现问题.
使用IplImage*
类型而不是Mat(使用cvReleaseImage()
Mat成员函数代替)的类似示例可以正常.release()
工作.
任何提示?
.release()
只应在特殊情况下调用,而不是日常使用.只需清除矢量:
std::vector<cv::Mat>().swap(matVec);
Run Code Online (Sandbox Code Playgroud)
这会调用每个Mat
s 的析构函数,释放内存(如果没有其他cv::Mat
指向它的话 - 记住cv::Mat
,不像IplImage
是引用计数的数据类型.如果在其他地方引用它,你也必须清除该引用).如果要保留向量,但要删除内容,请将.release()
代码中的行替换为:
matVec[k] = cv::Mat();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3426 次 |
最近记录: |