C語言常見記憶體管理錯誤

2021-10-23 19:30:05 字數 379 閱讀 8923

c語言常見記憶體管理錯誤:

記憶體沒有分配就開始訪問。這常常是分配記憶體後,沒有返回值。如果記憶體分配失敗了,就開始使用,就會發生解引用空指標。

記憶體沒有初始化,那麼其中的值是不確定的。如果程式設計師當做值是0來使用,就出現了錯誤。

記憶體用完沒有釋放。這導致記憶體洩露。

記憶體重複釋放。如果這塊記憶體已經分配給程式的其它部分,則影響了其它部分的功能。如果這塊記憶體還沒有分配給程式的其它部分,則沒有危害。

釋放記憶體後又訪問。如果這塊記憶體已經分配給程式的其它部分,那麼執行寫操作就影響了新使用者的功能,執行讀操作,則讀出了新使用者寫入的值。如果這塊記憶體還沒有分配給程式的其它部分,因為釋放記憶體只是標誌這塊記憶體沒有被使用,並不清空其中的內容,所以,那麼老的內容還在,可以讀取,寫入內容也沒有危害。

常見的C記憶體管理錯誤

1 初始化錯誤。例如 malloc 返回的空間沒有進行初始化 2 未檢查返回值 3 對空指標或者無效指標解引用 4 引用已經釋放的記憶體 未定義 例如 for p head p null p p next free p 可以寫成 for p head p null p q 5 對同一塊記憶體釋放多次...

C 記憶體常見錯誤

在系統開發過程中出現的bug相對而言是比較好解決的,花費在這個上面的除錯代價不是很大,但是在系統整合後的bug往往是難以定位的bug 最好方式是打樁,通過打樁可以初步鎖定出錯的位置,如 進入函式前列印日誌,離開時再次列印日誌 而這些難以定位的bug基本分為2類 記憶體錯誤和並非問題。本文總結的時記憶...

記憶體管理 常見記憶體錯誤及對策

發生記憶體錯誤是 件麻煩事,編譯器不能自動的發現這些錯誤,通常是在程式執行時才能捕捉到,而這些錯誤大多沒有明顯症狀,時隱時現增加了改錯的難度。1 記憶體被分配成功,卻使用了它。如果指標p是函式的引數,那麼在函式的入口處用 assert p null 進行檢查 如果用malloc或new來申請記憶體,...