Raw 轉 Dng內存泄露問題 dng_sdk

      問題是這樣的,前面文章有介紹過怎樣從RAW轉dng,包括工程配置,配置庫編譯方法以及如何寫dng,原來測試的時候由於圖片很少,轉換的時候沒有注意到內存泄露問題,領導航拍弄了3000多張的raw圖需要轉成dng,這下問題來了,任務管理器的內存眼看着上升,直到直接卡死,因爲dng的類指針採用的都是智能指針,所以以爲自己申請的空間釋放掉就可以了,但是AutoPtr<dng_image>image(new dng_simple_image(bounds,planes,pixelType,memalloc));聲明的語句,如何也釋放不掉了,尋尋覓覓尋尋覓覓,刪除各種東西,改寫人家的析構函數,就是刪除不掉,整整找了大半天,咋麼也搞不定,上火啊……最討厭的就是內存泄露,內存泄露尤其討厭的是指針導致的內存泄露,尋尋覓覓無處,上火無數,只有改變思路了。

     首先,有new和malloc必須要有delete和free,智能指針聲明函數中有new,就必須delete,但是要delete誰呢?image?不對,要看image指針的內存最後直到哪裏去了,一開始找不到,就在最下面各種刪除,沒有效果。改變思路:申請的地方delete一下,有釋放掉,說明delete就可以了,不需要什麼析構函數。下一個傳到那去了,delete一下,有釋放掉,依次找或者直到自己的指針最終指向哪裏了,直接在最後的時候delete就可以了。raw轉dng,dng_negative *negative = host.Make_dng_negative();negative寫dng,所以最終的指針就是negative了,在最後delete negative就行了。

     

發佈了45 篇原創文章 · 獲贊 22 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章