未使用合法內存
你的進程,要去寫一個空指針,也就是null,本質上就是0,線性地址空間的0頁,cpu 設計時實現了0頁故障,從而進入相應的內核處理例程
再一個:寫一個內存地址,如果這個地址,物理內存沒分配,並且不符合page fault的條件,內核就會報故障
數組越界,操作了不屬於你的變量的內存,在某些情況下,會導致數據錯誤,會死掉
內存使用規範類
還有 bus error,就是對齊錯誤,某種內存使用要求對齊
代碼錯誤
一個指針未初始化,就使用,野指針,也是指向某個不該指向的內存
這是因爲,如果代碼裏,誤修改了別的變量,如果那個變量的值,還在可取值正常範圍內,可能不會導致錯誤,
但是,如果修改後的值,在它應該發揮作用的某個代碼的地方,檢查失敗,或用它計算某個值失敗,可能就會報錯,
linux的C程序自身無程序異常處理機制,只能是系統捕捉到之後,進行處理,把內存狀態記錄下來