cheng_you_know

学而时习之!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最近项目使用OpenCV,debug时发现使用IplImage导入图像时,即使cvReleaseImage也会有内存泄漏。
查资料,有的说使用CvvImage,即可解决内存泄漏问题。实际试了一下,内存泄漏是一样的。怀疑是vfptr没有释放。
再找解决方案,发现有人说:有两个方法可以消除memory leak的错误,一个是用 use mfc as static library的编译选项。另外一种方法,将cxcored.lib highguid.lib改成cxcore.lib和highgui.lib以后,编译运行,也是没有问题的。
其中,在VC6.0中,在project->Setting中并未找到use mfc as static library选项。但是在project->Setting->General中,可以选择Use MFC in a Static Libary,然后再重新编译,即无内存泄漏。
两种导入图像方式如下
1 IplImage *pimg = NULL;
CvvImage newCvvImage;
newCvvImage.Load("D:\\1.bmp",3);
pimg =newCvvImage.GetImage();
newCvvImage.Destroy();
2.IplImage *pimg = NULL;
pimg = cvLoadImage("D:\\1.bmp",3);
cvReleaseImage(&pimg);
pimg = NULL;

两个lib库的区别:
运行VS 2005的生成命令后生成库文件,debug模式下生成:cxcored.lib和cxcore100d.dll,
release模式下生成cxcore100.dll和cxcore.lib(可以看到debug文件比release文件多了一个字母d)。

posted on 2013-07-29 20:16  cheng_you_know  阅读(621)  评论(0编辑  收藏  举报