我有一个简单的小程序,可以将一种文件类型转换为另一种.fprintf()有很多调用(大致线性地依赖于要转换的文件的大小).当我开始时,没有调用fflush().在小文件(<10 Kb)上没有任何问题.在一个较大的文件(> 40 Kb)上,当达到fclose()的调用时,整个事情就崩溃了.
所以,我想也许我让缓冲区填满了太多东西,所以我在大约*512次调用fprintf(其中每个调用打印出8到10个字符)之后调用fflush().该程序仍然在调用fclose()时崩溃.
*因为我没有实际计数调用fprintf中,我用另算中已有的程序,有可能这个数字小于512.
这让我想到了我的问题.什么时候应该调用fflush()?应该在一定数量的数据被打印后调用吗?还是有什么我想念的?
谢谢
顺便说一句,如果它是相关的,我在Windows 7(64位)上,我已经在"a +"模式下输出文件
如果fprintf
没有一次通话就可以多次拨打电话是完全合法的fflush
.崩溃是由程序中的其他内容引起的,很可能是一些无效的内存访问,添加fflush
调用不会修复它们.