发现自己写的程序存在内存泄露,
我写代码的时候很细心的,怎么还有内存泄露?
查了一通也没有查出原因。
然后试了一下从摄像头读取视频,没有泄露;
从文件读视频,有泄露。
那么,这应该不是我的问题。
写了一个简单的测试程序,确定了是度视频文件时候,cvQueryFrame存在内存泄露。
我用的是OpenCV 0.9.5 (beta5),已经发布很长时间了,
到Yahoo! OpenCV group上输入 “cvQueryFrame memory leak”一查,果然有答案。
只要简单修改一下源代码则可:
文件otherlibs/highgui/cvcap.cpp中的函数:
icvGrabFrameAVI_FFMPEG(…..)
在函数结束处的return valid;语句之前添加一行释放内存代码则可,如下:
the_end: av_free_packet(pkt); //请添加这一行,释放内存 return valid; }
重新编译安装OpenCV,问题得以解决。
CVS中的OpenCV这个问题早已经解决。
Update:
不过,这样改了后,读取视频文件的最后一帧,好像有问题,
反正到了最后的时候,程序报segment error,
不管了。
师傅的blog科研含量真高啊 ::happy::
含金量百分百,鉴定完毕!
段错误?是不是最后opencv后来又使用了本来已经释放的内存。
请教,opencv 中的sample应该怎么调试啊,用的beta5.0,里面也没有说明, 像看看sample 参考几个detection的用法和效果,或者,能告诉我,应该去哪察看相关信息,谢谢了!