社区
C语言
帖子详情
fopen文件后,如果不fclose,程序也不退出会不会内存泄露?
honemay
2010-05-27 03:39:29
我每秒钟都需要写数据到一个文件,我只fopen一次,然后用fputs和fflush来更新文件内容
但我不fclose...是不是缓冲区一直会写而不释放?
...全文
1472
14
打赏
收藏
fopen文件后,如果不fclose,程序也不退出会不会内存泄露?
我每秒钟都需要写数据到一个文件,我只fopen一次,然后用fputs和fflush来更新文件内容 但我不fclose...是不是缓冲区一直会写而不释放?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
honemay
2010-05-27
打赏
举报
回复
[Quote=引用 13 楼 akirya 的回复:]
你要写上千次的话干嘛要打开那么多次,打开一次关闭一次。
[/Quote]
我的做法就是只打开和关闭一次..
这个问题主要是我现在运行过程中产生了内存泄露,自己看代码没找出问题,然后对文件操作不够理解,才以为是没有fclose而产生的问题..
现在解决了!
多谢各位的指点..今天又学到了!!
珍惜生命远离CPP
2010-05-27
打赏
举报
回复
你要写上千次的话干嘛要打开那么多次,打开一次关闭一次。
honemay
2010-05-27
打赏
举报
回复
[Quote=引用 9 楼 tu_lq 的回复:]
既然你是一天一个log文件,一次fclose就够了,只要保证fclose最终可以调用到,不就可以了么?甚至连fflush都不用,除非你马上想看结果,等它缓冲满再输出不也可以么?
[/Quote]
多谢指教。
我每天凌晨的定时器会关闭当前的文件指针,然后再打开新的文件..
我现在用fflush,是因为我对这些操作还不够理解!!
现在看来,我确实不需要fflush
honemay
2010-05-27
打赏
举报
回复
fflush已经清空了缓冲区..
我的程序的内存泄露原来是我自己很隐蔽的一个new既然没释放..
真够隐蔽的!!!
Myth_cn
2010-05-27
打赏
举报
回复
这样是不行的。系统对打开的文件数是有限制的,只打开不关闭的话很快就会达到上限,这时再打开文件就会失败。建议在打开新文件的时候关闭上一次打开的文件
toplinq
2010-05-27
打赏
举报
回复
既然你是一天一个log文件,一次fclose就够了,只要保证fclose最终可以调用到,不就可以了么?甚至连fflush都不用,除非你马上想看结果,等它缓冲满再输出不也可以么?
honemay
2010-05-27
打赏
举报
回复
不可能不fclose就会内存泄露把?
肯定有相关的函数可以把缓冲区清空的,只是我现在正在找..
我对文件操作不是很熟练啊!!学习中。
ex_dijkstra
2010-05-27
打赏
举报
回复
fflush倒是可以满足情况,将缓存里的数据刷新到文件中,但是不fclose肯定会内存泄露吧。。。
honemay
2010-05-27
打赏
举报
回复
我在main里面
sprintf(filename,"./log/lrc.log.%04d-%02d-%02d",p->tm_year+1900, p->tm_mon+1 ,p->tm_mday);
recordFile = fopen(filename, "a+");
然后在writelog函数里写 //这个函数程序运行中,1秒钟会被调用上千次
fputs(recordData, recordFile);//recordData就是需要写入文件的数据
fflush(recordFile);
我的fclose是在一个定时器里写的,因为日志文件一天一个!
honemay
2010-05-27
打赏
举报
回复
我1秒钟可是需要执行上千次的文件写操作!同一个文件!
ex_dijkstra
2010-05-27
打赏
举报
回复
贴代码看看?
honemay
2010-05-27
打赏
举报
回复
但是每次都fopen和fclose不浪费性能么?
那我每1秒钟可是要上千次的fopen和fclose啊?
ex_dijkstra
2010-05-27
打赏
举报
回复
fopen完在程序最后还是要fclose保险吧。。。
1s中fopen、fclose一次确实浪费效率。。。
珍惜生命远离CPP
2010-05-27
打赏
举报
回复
为了安全还是写完就fclose
第10讲 6.2.12关闭
文件
—
fclose
.doc
文档
第11讲 补充 6.2.12不关闭
文件
的后果 2.doc
文档
c语言
文件
读写操作代码.txt
c语言
c语言
文件
读写操作代码.docx
c语言
使用C语言实现,创建
文件
,资源为源代码,可直接运行
c语言,编程实现
文件
的创建,具体可实现,从键盘中输入要创建的
文件
所在的路径及名称,无论创建成功与否均输出提示信息。
C语言
70,029
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章