【问题标题】:Memory leak using cvCopy使用 cvCopy 的内存泄漏
【发布时间】:2011-07-27 17:28:20
【问题描述】:

我在使用 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

【问题讨论】:

    标签: c++ memory-leaks opencv


    【解决方案1】:

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

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

    编辑

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

    【讨论】:

    • 我在循环开始时释放它
    • 请问你用的是哪个版本?
    • 发现内存泄漏,不是这个 cvCopy 的问题!抱歉,非常感谢您的提示
    • @davan 对我们来说重要的是,您查看答案并接受解决您问题的答案或投票那些真正帮助您的答案。
    • @karlphillip 我找不到要感谢的按钮!我没有注册所以也许这就是原因..可能是吗?我找不到接受答案的按钮..
    【解决方案2】:

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

    【讨论】:

    • 我在循环开始时释放它是的
    • 发现内存泄漏,不是这个 cvCopy 的问题!抱歉,非常感谢您的提示
    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 2012-05-05
    • 1970-01-01
    • 2012-03-24
    • 2019-09-14
    • 2011-06-11
    • 2018-06-01
    • 2017-05-06
    相关资源
    最近更新 更多