cvCloneImage内存溢出问题

  • Post author:
  • Post category:其他





很多人在使用cvCloneImage时习惯采用下面的方式,


例如:


IplImage *dst = cvCreateImage(xxx);


dst = cvCloneImage(src);




事实上,这么做是错误的。因为

cvCloneImage


会重新开辟一段内存,然后对src

中的数据进行复制。如果cvCloneImage用在循环中,就会造成内存溢出,程序崩溃,例如:


IplImage *dst = cvCreateImage(xxx);


while(1){


dst = cvCloneImage(src);}





正确的做法是,在使用函数前不开辟内存,例如:


IplImage *dst = NULL;


dst = cvCloneImage(src);




用在循环里则需要每一次循环都内存释放,例如:


IplImage *dst = NULL;


while(1){


dst = cvCloneImage(src);


cvReleaseImage(&dst);}





这样做就解决了cvCloneImage

内存泄露的问题了。



版权声明:本文为BVTTec原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。