fclose SIGABRT

希望那位高手帮忙解决以下呀
ftype_t ifs = fopen(name, "rb");
if (!ifs) {
clearerr(ifs);
fclose(ifs);
return RESULT_ERROR;
}
buff_char(ofs, FILE_NAME_TAG, nodes);
buff_string(ofs, nodes, name);
buff_char(ofs, END_TAG, nodes);
char inbuff[BUFF_SIZE] = {'\0'};
size_t size = 0;
do {
memset(inbuff, '\0', BUFF_SIZE);
size = fread(inbuff, sizeof (char), BUFF_SIZE, ifs);
buff_string(ofs, nodes, inbuff);
} while (!ferror(ifs) && !feof(ifs));
if (ferror(ifs)) {
printf("%serror in re scaning file $%s$\n", indent, name);
clearerr(ifs);
fclose(ifs);
return RESULT_ERROR;
}
buff_char(ofs, EXIT_TAG, nodes);
clearerr(ifs);
fclose(ifs);//这里崩溃,为什么呢?
return RESULT_OK;
错误输出如下:
*** glibc detected *** ./main.o: free(): invalid next size (normal): 0x0000000000606390 ***
======= Backtrace: =========
/lib/libc.so.6[0x7f494f2ef08a]
/lib/libc.so.6(cfree+0x8c)[0x7f494f2f2c1c]
/lib/libc.so.6(fclose+0x14c)[0x7f494f2dddac]
./main.o[0x402aea]
./main.o[0x402853]
./main.o[0x401a45]
./main.o[0x40136b]
./main.o[0x401292]
/lib/libc.so.6(__libc_start_main+0xf4)[0x7f494f2991c4]
./main.o[0x400e39]
======= Memory map: ========
00400000-00405000 r-xp 00000000 00:15 75203642 /home/r/i/gilyou/gecix/main.o
00605000-00606000 rw-p 00005000 00:15 75203642 /home/r/i/gilyou/gecix/main.o
00606000-00627000 rw-p 00606000 00:00 0 [heap]
7f4948000000-7f4948021000 rw-p 7f4948000000 00:00 0
7f4948021000-7f494c000000 ---p 7f4948021000 00:00 0
7f494f06d000-7f494f07a000 r-xp 00000000 08:01 17825947 /lib/libgcc_s.so.1
7f494f07a000-7f494f27a000 ---p 0000d000 08:01 17825947 /lib/libgcc_s.so.1
7f494f27a000-7f494f27b000 rw-p 0000d000 08:01 17825947 /lib/libgcc_s.so.1
7f494f27b000-7f494f3d3000 r-xp 00000000 08:01 17825953 /lib/libc-2.7.so
7f494f3d3000-7f494f5d3000 ---p 00158000 08:01 17825953 /lib/libc-2.7.so
7f494f5d3000-7f494f5d6000 r--p 00158000 08:01 17825953 /lib/libc-2.7.so
7f494f5d6000-7f494f5d8000 rw-p 0015b000 08:01 17825953 /lib/libc-2.7.so
7f494f5d8000-7f494f5dd000 rw-p 7f494f5d8000 00:00 0
7f494f5dd000-7f494f5fa000 r-xp 00000000 08:01 17825944 /lib/ld-2.7.so
7f494f7e9000-7f494f7eb000 rw-p 7f494f7e9000 00:00 0
7f494f7ee000-7f494f7fa000 rw-p 7f494f7ee000 00:00 0
7f494f7fa000-7f494f7fc000 rw-p 0001d000 08:01 17825944 /lib/ld-2.7.so
7fff577e7000-7fff577fc000 rw-p 7ffffffea000 00:00 0 [stack]
7fff577fe000-7fff57800000 r-xp 7fff577fe000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
compressing file $ed2k$Aborted

第1个回答  2012-02-23
fclose关掉了一个已经被关闭的文件指针,你查查你要关闭的文件指针是否已经被关闭了,或者是NULL

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网