cvLoadImage後釋放內存

原文地址http://hi.baidu.com/cloverhouse/item/94e886a7816e2b268819d344

 

之前在寫程序的時候,眼看着隨着運行時間增加,內存耗用率,直線上升,

最終out of memory了,程序直接崩潰了

私心想着一定又是哪裏沒有釋放空間了   一點一點查找  

然後發現我忽略的很重要的一點  那就是  cvLoadImage函數

之前一直稀裏糊塗的不知道這個函數會不會自動分配空間

爲了安全總是這樣寫    IplImage* img = cvCreateImage( size, type, cn );

                                                     img = cvLoadImage( ... );

後來索性                     IplImage* img = cvLoadImage( ... );

就這樣暈暈乎乎的       第一種是知道釋放空間的   第二種卻總是沒有釋放  


所以這次出現問題    決定好好查查這個函數:


Opencv包含的庫:

CxCore 提供基本數據結構  

Cv 提供圖像處理有關函數 

 HighGUI 爲用戶提供簡單易用的圖形用戶接口(交互有關 )


從這裏看cvLoadImage爲讀取圖像到程序涉及交互 源文件應該存於 HighGUI庫中

位置:" Opencv\otherlibd\highgui\loadsave.cpp "



  

查看   icvLoadImage函數 會發現有cvCreateImage函數

因此此過程是有創建空間的,正確的做法就是:


IplImage*  img = cvLoadImage(...);

cvReleaseImage(&img);


一定要記得及時釋放空間,小的程序可能體現不出來,當需要循環處理多個圖像時就會看見區別了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章