c++ - 使用 cvCopy 内存泄漏

标签 c++ memory-leaks opencv

我在使用 OpenCV 的 cvCopy 函数时遇到内存泄漏问题。如果我评论那条线,那就没问题了。如果不是,内存会增加直到系统崩溃..

我发现了这篇关于 OpenCV 内存泄漏的有趣文章:http://www.andol.info/hci/963.htm但如果我评论这一行: targetImage = cvCreateImage( ....

我遇到了另一个问题,因为它说我正在传递一个空指针。

..... //other code (here we are inside a loop
cvSetImageROI(&tmpimag,TargetRect);
targetImage = cvCreateImage( cvSize(TargetRect.width, TargetRect.height), tmpimag.depth, tmpimag.nChannels );
cvCopy(&tmpimag,targetImage);
cvResetImageROI(&tmpimag); // release image ROI 
....//other code

最佳答案

根据您的一小段代码,我可以判断内存泄漏可能是您的错。

在循环的每次迭代中,您使用 cvCreateImage() 创建/分配新图像,但我没有看到您释放它(检查 cvReleaseImage() ).因此,在每次迭代之后,分配的内存越来越多,从而产生真正的内存泄漏。

编辑:

cvResetImageROI(&tmpimag); 不释放图像,它只是重置之前设置的ROI信息。您仍然需要 cvReleaseImage(&tmpimag)

关于c++ - 使用 cvCopy 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5514371/

相关文章:

c++ - 生成 C++ 代码的开源 UML 工具

c++ - 字符串中的十六进制到整数中的十六进制

c++ - 初始化矩阵和访问其数据的不同方法

Python 和 OpenCV - 霍夫线变换中的主线

c++ - 如何使用带有智能指针的模拟对象

c++ - 我应该使用 std::vector + 我自己的大小变量吗?

node.js - 检测到可能的EventEmitter内存泄漏

java - 在 Java 7 中加载 KeyStore 会泄漏类加载器

c++ - 内存表和 C++

arrays - 优化从 openCV mat 到 2D float 数组的复制