代码改变世界

OPENCV解决内存泄露

2012-10-19 22:46  MKJOHN  阅读(655)  评论(0)    收藏  举报

摘自: http://blog.csdn.net/woxincd/article/details/7712026

 

cvLoadImage函数:

造成内存泄露

使用CvvImage类代替。并且使用CvvImage类的Load函数。

使用过程大概如下:

//变量定义:

CvvImage pSrcImg;

IplImag *pSrcImgCopy ;                       //使用IplImag变量做个拷贝。毕竟IplImag 类处理方便。

//获取图像:

pSrcImg.Load(str);                                //str为Cstring类型的图像文件名

pSrcImgCopy = pSrcImg.GetImage();   //拷贝出pSrcImg的图像数据。

//释放内存

pSrcImg变量不需要每次释放,因为每次Load时是覆盖以前的内存区域。pSrcImgCopy同样。

不过在程序结束时要释放,以免产生内存泄露或者别人以为你忘了。

cvReleaseImage(&pSrcImgCopy );

pSrcImg.Destroy();

不过要正确释放pSrcImgCopy时,声明时必须create下:

pSrcImgCopy =cvCreateImage(cvSize(IMGWIDHT,IMGHEIGHT),IPL_DEPTH_8U, 3);

//IMGWIDHT,IMGHEIGHT为图像宽和高。