在C語言中,任何操作指令都離不開對內存的操作,所以即便編譯的時候沒有語法操作,但是在實際運行中有可能對內存進行非法操作,這種情況就會產生段錯誤Segmentation fault (core dumped)!要解決段錯誤就要先找到段錯誤的地方。
如何在程序中尋找段錯誤?
段錯誤不是語法錯誤,所以在編譯時不會提示出錯,只有等到運行時才會提示出現段錯誤,但是段錯誤不會提示在哪一行,可以通過printf()函數來尋找段錯誤位置,只要發生段錯誤,那么程序就會馬上結束。
舉個例子:
printf("11111!\n");
xxxx;
printf("22222!\n");
yyyy;
printf("33333!\n");
zzzz;
假如運行上述代碼得到的執行結果為:
11111!
22222!
Segmentation fault (core dumped) -> 說明段錯誤是出現"yyyy;"
段錯誤一般是指針指向有問題,找到段錯誤的地方最好打印出指針內容看看是不是自己預期的指針內容再進行修改,如果是鏈表就畫圖查看自己的鏈表邏輯有沒有出問題
總結解決段錯誤的步驟:
1.使用printf()函數尋找段錯誤的地方
2.打印出現段錯誤的指針,鏈表或者打開文件目錄的返回值看看是不是自己的預期結果
3.根據結果現在修改代碼重新編譯