2013-03-07 145 views
0

我收到了fclose中止的錯誤想知道我在做錯的地方。 Core Duped:C - Fclose - > Aborted(核心轉儲)

Stack trace: 
Frame  Function Args 
0022A698 7C802542 (00000758, 0000EA60, 000000A4, 0022A794) 
0022A7B8 610DC559 (000007DD, 0000000A, 00000032, 0000000B) 
0022A8A8 610D9913 (00000000, 7C801879, 0022FF44, 7C839AC0) 
0022A908 610D9DEE (00000144, 00000000, 0022AC30, 00000006) 
0022A9B8 610D9F40 (00000288, 00000006, 00000001, 200586E0) 
0022A9D8 610D9F6C (00000006, 00000006, 0022AA38, 610FCCE7) 
0022AA08 610DA233 (7C809C1B, 00000744, 0022AA68, 610FCE07) 
20038678 61110408 (61201C98, 00000000, 20010410, 00000001) 
End of stack trace 

我在項目中使用了Cygwin + GCC + Autotools。不明白這是什麼意思。在此之後沒有什麼是因爲該程序必須退出,但顯示中止是令人不安的。

+3

啊,好老7C802542。 (不,認真,我們需要看到一些代碼:) – aib 2013-03-07 05:31:25

+1

檢查你的代碼,如果你打電話給fclose(),不止一次在同一個指針 – 2013-03-07 05:33:58

+0

我肯定只打一次100%確定 – 2013-03-07 05:35:38

回答

4

fclose()獲得核心轉儲的一種標準方式是傳遞一個空文件指針,因爲您無法打開文件:

FILE *fp = fopen("/long/hairy/path/with/a/missing/file/at/the/end", "r"); 

fclose(fp); 

始終從fopen()及其親屬檢查返回值:

if (fp == NULL) 
    ...report problem 
else 
{ 
    ...use fp... 
    fclose(fp); 
}