有人可以幫助我確定C語言中的Seg Fault的原因以及gdb輸出的含義嗎?
當我運行程序時,它打印出「SUCCESS !!!!」如果它工作正常,但我不斷收到seg故障,我似乎無法弄清楚在哪裏。有人可以幫助我確定究竟是什麼導致SIGABRT信號,以及導致分段故障的最可能原因是什麼?
我的代碼寫在c。
編輯: 在我在97行的主要代碼中,我有函數fclose(fp),但我應該已經在另一個函數中讀過它。這裏是我的代碼的main.c:
FILE *fp = NULL;
if(fp = fopen(full_filename, "r")){
Node* tree = NULL;
tree = parser(fp);
printTree(tree, 1);
fclose(fp);
}
else
printf("Error file DNE\n");
return 0;
功能解析器獲取文件指針,並將該文件指針稱爲掃描儀的另一個功能。然後,掃描程序會從該文件創建一個單詞列表。然後解析器檢查單詞的語法。
編輯2: 我擺脫了主要的fclose(fp),當我在gdb中運行它時,我沒有任何錯誤。但是當我在沒有gdb的情況下運行它時,我仍然遇到seg錯誤。
請取[旅遊], 學提出好的問題計算器.com/help/how-to-ask, make a [mcve]。一個MCVE應包括各種樣本輸入(說明所有方面)和期望的輸出。 如果您在尋找調試代碼的幫助,請參閱https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch
根據gdb,問題在於文件'main.c'中編號97.它看起來像是與無效指針有關。你能告訴我們代碼嗎?這樣人們將能夠爲你提供幫助 – kuro
請刪除圖片並作爲文本發佈文本。使用[編輯]按鈕來完成。檢查[編輯幫助](https://stackoverflow.com/editing-help)格式化提示(您希望整個剪輯被格式化爲代碼塊)。 –