我使用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
答案 0 :(得分:3)
根据你的一小段代码我可以告诉你,内存泄漏可能是你的错。
在循环的每次迭代中,您使用cvCreateImage()
创建/分配新图像,但我没有看到您发布它(检查cvReleaseImage()
)。因此,在每次迭代之后,会分配越来越多的内存,从而产生真正的内存泄漏。
修改强>:
cvResetImageROI(&tmpimag);
不会发布图片,只会重置先前设置的投资回报率信息。您仍然需要cvReleaseImage(&tmpimag)
。
答案 1 :(得分:0)
你是在每次循环迭代时释放targetImage吗?