0

我在 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。没明白那是什么意思。在此之后什么都没有,因为程序必须退出但显示 Aborted 令人不安..

4

1 回答 1

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);
}
于 2013-03-07T06:49:25.057 回答