發生記憶體錯誤是 件麻煩事,編譯器不能自動的發現這些錯誤,通常是在程式執行時才能捕捉到,而這些錯誤大多沒有明顯症狀,時隱時現增加了改錯的難度。
1)記憶體被分配成功,卻使用了它。如果指標p是函式的引數,那麼在函式的入口處用「assert(p != null)"進行檢查;如果用malloc或new來申請記憶體,應該用」if(p == null)"或「if (p!=null)"進行預防處理。
2)記憶體分配雖然成功,但尚未初始化就引用它
3)記憶體分配成功並已經初始化,但操作越過了記憶體邊界。
4)忘記了釋放記憶體,造成記憶體洩漏
5)釋放了記憶體卻繼續使用它,有以下三種情況。
程式中的物件呼叫關係過於複雜,實在難以搞清楚某個物件究竟是否已經釋放了記憶體,此時應該重新設計資料結構,從根本上解決物件管理的混亂局面
函式的return語句寫錯了,注意不要返回指向棧記憶體的指標或者引用,因為該內存在函式體結束時被自動銷毀。
使用free或delete釋放了記憶體後,沒有將指標設定為null,導致產生野指標。
常見的記憶體錯誤及對策
發生記憶體錯誤是件非常麻煩的事情。編譯器不能自動發現這些錯誤,通常是在程式執行時才能捕捉到,而這些錯誤大多沒有明顯的症狀,時隱時現,增加了改錯的難度。有時使用者怒氣沖沖地把你找來,程式卻沒有發生任何問題,你一走,錯誤又發作了。常見的記憶體錯誤,及其對策如下所述。1 記憶體分配未成功,卻使用了它。程式...
常見記憶體錯誤及其對策
常見記憶體錯誤及其對策 發生記憶體錯誤是件非常麻煩的事情。編譯器不能自動發現這些錯誤,通常是在程式執行時才能捕捉到。而這些錯誤大多沒有明顯的症狀,時隱時現,增加了改錯的難度。有時使用者怒氣沖沖地把你找來,程式卻沒有發生任何問題,你一走,錯誤又發作了。常見的記憶體錯誤及其對策如下 一 記憶體分配未成功...
常見的記憶體錯誤及其對策
1.常見的記憶體錯誤及其對策 記憶體未分配成功卻使用了它 在使用記憶體之前檢查指標是否為null。如果指標p是函式的引數,那麼在函式的入口處用assert p null 進行檢查 如果使用malloc或者new來申請記憶體,應該用if p null 或if p null 進防錯處理。無論用何種方式建...