内存泄漏使用cvCopy

时间:2011-04-01 13:55:05

标签: 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

2 个答案:

答案 0 :(得分:3)

根据你的一小段代码我可以告诉你,内存泄漏可能是你的错。

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

修改

cvResetImageROI(&tmpimag); 不会发布图片,只会重置先前设置的投资回报率信息。您仍然需要cvReleaseImage(&tmpimag)

答案 1 :(得分:0)

你是在每次循环迭代时释放targetImage吗?