2013-03-07 151 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); 
}