C 記憶體洩露的問題

2021-06-18 05:23:27 字數 500 閱讀 2514

遇到乙個很頭疼的記憶體洩露的問題,除錯的大半天才發現的,指標指向的物件1被delete了兩次,而在vs2005中,debug中斷的位置不是這個被多次delete的物件1,而是另外乙個物件2,在釋放它的時候,提示訪問了未知的堆疊。

雖然沒有在記憶體中仔細進行除錯,不過可以揣測出問題原因是,在多次釋放物件1的時候,釋放掉了物件2的資源,導致在釋放物件2的資源的時候,訪問未知的堆記憶體異常,而物件2在**中new和delete的**是沒有問題的,所以得找出物件1的異常,而在編譯器中沒有提示,這個問題就隱藏得比較深。

如何避免這樣記憶體洩露問題再次出現呢

1.規範**的編寫,涉及到指標操作一定要小心再小心,不要遺漏問題。

2.時常進行迭代測試,防止問題累計,這樣就可以在修改或者增加了新**的地方進行重點的除錯,而剛才出現的這個問題,也只能通過檢查**來找出問題的所在。

記憶體洩露問題

下面是乙個影象去霧的程式,主函式簡略如下,看一下下面的 有何問題。int main cvreleasecapture capture cvdestroywindow result return 0 大致說一下一些fast dahaze是乙個去霧類,負責影象處理,儲存等。程式看起來很簡單,主迴圈裡面做...

記憶體洩露問題

記憶體洩露是vc中自我認為比較難於解決的問題之一 至少現在解決起來很麻煩了 今天用boundschecker除錯了一下原來自己寫的程式,呵呵!居然提示記憶體洩露40位元組。看到了洩露的 的位置,一處new的地方,由於程式寫過很長時間了,所以想不起來了,乾脆模擬一下吧!程式中第一了乙個結構體,用於儲存...

python轉C的記憶體洩露問題

python的記憶體管理是引用機制,然後如果變數的引用數不減的話,那麼即使使用記憶體 也是然並卵的效果。python轉c的擴充套件的時候,c是可以對python的引用機制進行人為增減的,所以就導致可能的記憶體洩露。使用swig等工具模板,可能能夠避免手工忘記的一些問題,但是,如果你原來的 仍然是存在...