log4cxx 在VS2008下报内存泄露

  前几下下载了log4cxx准备学习其使用,编译好log4cxx的DLL ,新建MFC工程使用,日志正常生成,OK,退出程序时VC显示有很多的内存泄露。
      顿时觉得心一凉,这开源软件质量不至于这么差吧。。。随后查了查,查到有人说是误报。
于是:   1)加上visual leak detector (vld), vld并未提示有内存泄露,看来很有可能是误报了。
           2)按下面第一篇文章的方法,跟了一下_CrtDumpMemoryLeaks,  _DllMainCRTStartup上下断点,调试可发现log4cxx先于mfc90加载了,然后释放时先释放的mfc90,它在检查已分配内存链表时,把log4cxx中的还没释放的内存误报了。
详见下面这篇文章。
http://www.vis-sim.com/3dsceneBB/viewtopic.php?t=1027


解决办法:   证明为误报后就简单了,可以直接把log4cxx编译为release使用即可。
               若还是觉得不爽,非要用debug的log4cxx,在stdafx.h中加入#pragma comment(lib, "log4cxx.lib") 在工程属性中的link->Input->Additional Dependencies中删掉log4cxx.lib项, 则可使mfc90加载释放顺序正常,从而VC不再误报内存泄露。


PS:自己也写弄了个小程序演示此种mfc使用win32 dll的情况,发现一个有意思的事情,定义的string内字符数要不小于16才会显示误报情况,原因不明,望高手指点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值