C - Fclose - >中止(核心倾倒)

时间:2013-03-07 05:27:42

标签: c gcc cygwin

我在fclose上收到Aborted错误,想知道我在哪里做错了。核心Duped:

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。不明白这意味着什么。在此之后没有任何东西,因为程序必须退出,但显示Aborted是令人不安的..

1 个答案:

答案 0 :(得分: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);
}