转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847
前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的问题。这里小小总结一下自己遇到的麻烦。
1、内存泄露
内存泄露是说没有释放已经不能使用的内存,这里一般指堆的内存才需要显示的释放。比如用malloc,calloc,realloc,new分配的内存是在堆上的,需要用free,delete显示的回收。内存泄露最明显的一是程序很慢,在运行程序时你可以启动任务管理器,会看到程序占用的内存一直“砰砰砰”的往上涨:

最后直接崩溃,或者你关闭程序的时候也会异常退出,出现
Debug Assertion Failed!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
之类的问题。

除了new的对象我们知道要delete。OpenCV中使用cvCreateImage()新建一个IplImage*,以及使用cvCreateMat()新建一个CvMat*,都需要cvReleaseImage() cvReleaseMat()显示的释放
IplImage* subImg=cvCreateImage( cvSize((img->width)*scale,(img

本文总结了在OpenCV编程中常见的内存管理问题,包括内存泄露和一块内存被多次释放的情况。对于内存泄露,强调了堆内存需要通过free或delete释放,并举例说明了如何正确使用cvReleaseImage()和cvReleaseMat()。而对于内存多次释放的问题,提到了可能导致错误的cvReleaseMemStorage()重复调用,以及在处理视频帧时,只需在最后释放CvCapture*,不需释放IplImage*。
最低0.47元/天 解锁文章
611

被折叠的 条评论
为什么被折叠?



