PTA段錯誤解決方法


什么是段錯誤?

一旦一個程序訪問了不可訪問的內存,(這個內存區可能是不存在的,或者是是受到系統保護的,或者是缺少文件或文件損壞。)
cpu 就會產生相應的保護,就會報錯segmentation fault

解決方法(偽)

  • 出現段錯誤時,首先應該想到段錯誤的定義,從它出發考慮引發錯誤的原因。
  • 在使用指針時:
    • 定義后:記得初始化指針
    • 使用時:記得判斷是否為 NULL
  • 在使用數組時:
    • 注意數組是否被初始化
    • 注意數組下標是否越界
    • 注意數組元素是否存在
  • 在訪問變量,注意變量所占地址空間是否已經被程序釋放掉
  • 在處理變量時,注意變量的格式控制是否合理等

常見產生原因

指針相關

  • 創建了空指針,試圖訪問它的值
  • 非關聯化一個空指針,然后分配(寫一個值到一個不存在的目標)
    即:
    int *p=NULL;      *p=1;
  • malloc 動態分配內存,釋放、置空完成后,再使用該指針。

無限遞歸,導致的堆棧溢出

內存越界(數組越界,變量類型不一致等)

訪問不存在的內存地址

比如:

    int *p=NULL;
    *p=1;

訪問系統保護的內存地址

訪問只讀的內存地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM