当前位置:  技术问答>linux和unix

fwrite()内存增长?w+与a+效率有区别?

    来源: 互联网  发布时间:2017-05-03

    本文导语:  平台A: Linux 2.6.9-89.ELsmp #1 SMP Mon Jun 22 12:32:43 EDT 2009 i686 i686 i386 GNU/Linux 平台B: Linux 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux 同样的写日志 demo 程序,一个for循环,不断的...

平台A: Linux 2.6.9-89.ELsmp #1 SMP Mon Jun 22 12:32:43 EDT 2009 i686 i686 i386 GNU/Linux
平台B: Linux 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux


同样的写日志 demo 程序,一个for循环,不断的调用写日志接口,usleep(1),
 在A上运行正常,此处的正常,指的是内存正常,
在B上,则“内存”一直增加.将fwrite()注释掉,则在B上也正常。



 if (m_pFile == NULL)
    {
       //将w+改为a+,增长的速度也不一样
        const char* szOpenMode = "w+";   //默认打开方式,追加 
        m_pFile = fopen(m_strCurFile.c_str(), szOpenMode);
        if(m_pFile == NULL)
        {
            printf("ospext-CXLogFile::WriteLogFileNew-fopen[%s] failn", m_strCurFile.c_str());
        }
    }

    if(m_pFile != NULL)
    {
         //在B上将fwite注释掉之后,也运行正常
        fwrite(strLog.c_str(),strLog.size(), 1, m_pFile);
        fflush(m_pFile);
    }



|
如果要检测内存泄露,最好用valgrind等专业工具,直接看是不靠谱的

|
 fclose(m_pFile) 


|
fwrite 有缓冲区, fclose 肯定能释放

fflush也能释放,但问题是内存一直增加
建议判断下 fflush 的返回值

或者直接用write,就不会有这样的问题

|
你关注下vmstat,看是不是内存都用来做cache了

    
 
 

您可能感兴趣的文章:

  • fwrite()库函数为什么会吃内存?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux fwrite 阻塞问题
  • FILE* stream fread fwrite 的使用方法
  • read/write 和 fread/fwrite 有什么区别
  • fwrite的问题
  • fwrite写文件时出现乱码
  • linux下利用fwrite文件写入过程中突然断电的处理
  • fopen fwrite 报Illegal seek错误 急 !急!望大家指点!
  • 网络技术 iis7站长之家
  • write或fwrite的问题
  • fwrite 居然返回错误,怎么回事,在线等待,解决立即给分
  • 我想查看fputs(),fread(),fwrite(),fclose()函数的源代码,请问这部分的源代码在哪个RPM包里。
  • 做socket程序,用recv,send这些函数好还是用fread,fwrite好?
  • read/write已经有了缓冲实现,为什么fread/fwrite还要实现缓冲?
  • 驱动fwrite调用失败??(已解决,快来人接分呀)
  • 用fwrite()向一个已打开的文件写入结构体,出现“段错误”
  • 程序调试问题,关于文件的fopen fclose fwrite的问题(在线等!)谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,