什麼是段錯誤?
一旦一個程式通路了不可通路的記憶體,(這個記憶體區可能是不存在的,或者是是受到系統保護的,或者是缺少檔案或檔案損壞。)
cpu 就會産生相應的保護,就會報錯segmentation fault
解決方法(僞)
出現段錯誤時,首先應該想到段錯誤的定義,從它出發考慮引發錯誤的原因。
在使用指針時:
定義後:記得初始化指針
使用時:記得判斷是否為 NULL
在使用數組時:
注意數組是否被初始化
注意數組下标是否越界
注意數組元素是否存在
在通路變量,注意變量所占位址空間是否已經被程式釋放掉
在處理變量時,注意變量的格式控制是否合理等
常見産生原因
建立了空指針,試圖通路它的值
非關聯化一個空指針,然後配置設定(寫一個值到一個不存在的目标)
即:
malloc 動态配置設定記憶體,釋放、置空完成後,再使用該指針。
比如: