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)
这会调用每个Mats 的析构函数,释放内存(如果没有其他cv::Mat指向它的话 - 记住cv::Mat,不像IplImage是引用计数的数据类型.如果在其他地方引用它,你也必须清除该引用).如果要保留向量,但要删除内容,请将.release()代码中的行替换为:
matVec[k] = cv::Mat();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3426 次 |
| 最近记录: |