bug之類定義導致的記憶體洩露

2021-05-11 02:21:20 字數 559 閱讀 8764

經過boost的單元測試後,發現程式竟然存在嚴重的記憶體洩露,總共有60多m。但是經過好多次認真排除還是毫無頭緒。

無意間發現編譯器有乙個警告(因為源**量比較多,警告有100多個,所以我編譯時直接就忽略警告了),**no destructor。我於是驚疑起來,定位到檔案後,發現我犯了乙個比較隱秘的錯誤。

比如我在a.h標頭檔案中定義了這樣乙個函式a。b是實現類。為了使得編譯依賴最小,我只是宣告了b。於是標頭檔案如下:

//***************=a.h

class b;

class a

b *impl;

};//***************===

原來這樣會造成a析構時,不能呼叫b的析構函式,因為a不知道b的實現類。所以記憶體洩露由此產生了。嗨,boost真是好東西,下次學學怎麼對記憶體洩露的位置進行定位。

補充:記憶體洩露

int main()

但是由於銷毀graphics物件是在main函式體結束時才進行的,由於gaphics被shutdown了,因此導致錯誤。之前沒有在析構函式裡未刪除它,因此導致了4個byte的記憶體洩露!

迴圈retain導致記憶體洩露

dog.h import class person inte ce dog nsobject property nonatomic,retain person owner end person.h import class dog inte ce person nsobject property n...

Flex Fade效果導致記憶體洩露

因為這個問題,害我找了一晚上,乙個物件始終無法被釋放,崩潰了 最後在幾千行 裡逐一排查,終於找到了這個罪魁禍首 具體原因 通常我們給物件設定效果事件時如下 this.setstyle hideeffect o fadeout this.setstyle showeffect o fadein 當執行...

使用self 導致的記憶體洩露

請看第一段 在myobject.m中 self.aobj nsobject alloc init void dealloc 你能否看出這裡的記憶體洩露?接下來看第二段 aobj nsobject alloc init void dealloc 你能否看出這裡是否也有記憶體洩露呢?如果你都能夠很確定的...