[问题] 如果 feof()==1 还需要fclose吗?(已补码)

楼主: deo2000 (800IM)   2016-10-04 11:37:31
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, 但是这个问题应该不分平台吧?
我这边在 0!=feof() 的时候 fclose 都会发生Segment fault
类似状况到stackoverflow上去找解答,都是说:
1.因为重复fclose
2.fopen根本就没有成功
但是我检查过没有上述两点,所以怀疑是不是已经到档案结尾时,就不用fclose?
作者: CoNsTaR ((const *))   2016-10-04 11:39:00
你要不要 fseek 回去再 close 一次试试看
作者: Schottky (顺风相送)   2016-10-04 11:44:00
应该是有别的地方写错,比如说 FILE stream 内容不正确
作者: longlongint (华哥尔)   2016-10-04 12:07:00
feof(里面有东西吗)
作者: kevingwn (如云如风的人生)   2016-10-04 12:49:00
不fclose()要怎么释放fopen()所配置的FILE*资源?
作者: Qbsuran (Qbsuran)   2016-10-04 13:55:00
fclose后给NULL 用NULL判断要不要fclose
作者: descent (“雄辩是银,沉默是金”)   2016-10-04 14:12:00
贴完整程式码看看
作者: jacky1989   2016-10-04 15:00:00
开档确定有成功吗?
作者: wtchen (没有存在感的人)   2016-10-04 17:40:00
程式码贴上来看看,不是每个人都有水晶球的。
作者: Schottky (顺风相送)   2016-10-04 18:53:00
请贴完整的程式码,错误出在你没贴出来的地方或是检查一下 fopen 成功时的 fptrMD5List 和 fclose 时其指标值是否一样,或是已经发生原本不该发生的变动然后 strsep 处理那边我怎么看都觉得很危险你应该检查 strFilePath 和 strFileMD5 的值是否为 NULL
作者: blackwindy (黑色的风)   2016-10-04 19:03:00
&strStream?
作者: Schottky (顺风相送)   2016-10-04 19:04:00
嗯,&strStream 那边也是错的
作者: shadow0326 (非议)   2016-10-04 19:07:00
八成哪边有非法存取 把stack弄烂了这种bug不一定出在seg fault的那个变量,要看整个区块
作者: Schottky (顺风相送)   2016-10-04 19:17:00
建议你把 strsep 的 man page 重看一次,strsep 的第一个参数型态比较特别,但宣告你没写出来照你这个动态配置法基本上到时候 free 时也是会出槌因为 strStream 的值会被 strsep 改动

Links booklink

Contact Us: admin [ a t ] ucptt.com