
本期話題
聊一聊
與內存有關的錯誤,最讓人感到頭疼,有時候程序出錯很隨機,需要排查好久才能找到。
所以,我們應該盡量避免與內存有關的錯誤,下邊列舉幾種錯誤,供你參考。
(1)間接引用壞指針
如果間接引用一個指向沒有任何意義的數據的指針,那么操作系統會以段異常終止程序。如果向只讀區域中寫入數據,這些區域會以保護異常終止這個程序。
(2)讀未初始化的內存
常見的錯誤是假設堆內存被初始化為零。
(3)棧緩沖區溢出
如果一個程序不檢查輸入字符串的大小就寫入棧中目標緩沖區,那么這個程序就會出現緩沖區溢出的錯誤
(4)假設指針和它們指向的對象大小相同
常見的錯誤是,假設指向對象的指針和它們所指向的對象是相同大小的。
(5)內存越界
這種錯誤會越界覆蓋原有內存的數據,導致出錯。
(6)引用指針,而不是它所指向的對象
如果不太注意 C 操作符的優先級和結合性,我們就會錯誤地操作指針,而不是指針所指向的對象。若對優先級和結合性有疑問的時候,就用括號。
(7)誤解指針運算
這類錯誤是忘記指針的算術運算操作是如何進行。是以指針指向的對象的大小為單位進行的,而這種大小單位并不一定是字節。
(8)誤解指針運算
這類錯誤是忘記指針的算術運算操作是如何進行。是以指針指向的對象的大小為單位進行的,而這種大小單位并不一定是字節。
(9)引用空閑堆塊中的數據
引用已經被釋放了的堆塊中的數據會導致出錯。
(10)引起內存泄漏
內存泄漏是緩慢、隱形的殺手,當程序員不小心忘記釋放已分配的內存塊,則會引起內存泄漏。
以上總結了 C 程序中,管理和使用內存常見的錯誤類型。在實際的編程中,應該避免出現這些錯誤,否則會出現意想不到的后果。

覺得文章不錯,點擊“分享”、“贊”、“在看” 唄!