2011-04-01 161 views
0

我有使用OpenCV的cvCopy功能的内存泄漏问题。如果我评论那条线,一切都好。如果没有内存提升直至系统崩溃..内存泄漏使用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 

回答

3

对于我可以告诉你基于你的一小段代码,mem泄漏可能是你的错。

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

编辑

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

+0

我在循环开始时释放它 – davan 2011-04-01 14:16:32

+0

已更新的答案。 – karlphillip 2011-04-01 14:23:22

+0

顺便问一下你使用的是哪个版本? – karlphillip 2011-04-01 14:24:39

0

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

+0

我在循环开始时释放它是 – davan 2011-04-01 14:17:03

+0

发现内存泄漏,这不是这个cvCopy的问题!对不起,非常感谢你的提示 – davan 2011-04-01 14:24:38