奇怪的内存泄漏..

tiwafic 2011-03-29 12:07:50
在使用_CrtDumpMemoryLeaks(); 检测内存泄漏。
检测出了如下内容:

Detected memory leaks!
Dumping objects ->
{135} normal block at 0x009F4950, 8 bytes long.
Data: < > 18 F9 EE 00 00 00 00 00
{134} normal block at 0x009F4908, 8 bytes long.
Data: < > D8 F8 EE 00 00 00 00 00
{133} normal block at 0x009F48C0, 8 bytes long.
Data: < > B0 F8 EE 00 00 00 00 00
{132} normal block at 0x009F4878, 8 bytes long.
Data: < > 88 F8 EE 00 00 00 00 00
Object dump complete.

但是非常奇怪的是,我用_CrtSetBreakAlloc(135);这样的语句在这些块里也无法中断..

而且我已经检查多次似乎内存都释放了的..

求解..
...全文
126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
c_losed 2011-03-29
  • 打赏
  • 举报
回复
44 vld
或者看下堆栈
pengzhixi 2011-03-29
  • 打赏
  • 举报
回复
如果有全局变量的话,也可能视为内存泄露
就想叫yoko 2011-03-29
  • 打赏
  • 举报
回复
检测工具只能参考
赵4老师 2011-03-29
  • 打赏
  • 举报
回复
检查是否内存泄漏的办法之一:
任务管理器 进程 查看 选择列 内存使用
任务管理器 进程 查看 选择列 虚拟内存大小
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上两个数值,再隔至少一小时,越长越好,比如一个月,再记录以上两个数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有内存泄漏!
tiwafic 2011-03-29
  • 打赏
  • 举报
回复
感谢诸位大牛的解答~

现在明白啦~

P.S.我使用的库都自己编译过一次,debug下。

arong1234 2011-03-29
  • 打赏
  • 举报
回复
内存泄露其实不可能完全准确监测出,如1F所述,全局变量没有泄露,但是按照内存泄露检测的原理,它也该被报为内存泄露。

而且,_CrtSetBreakAlloc函数只适用于debug版本,虽然你工程是debug的,如果你用的某个库不是debug的,但是泄露了,你也无法使用此函数

个人觉得,小块的内存泄露就随它去吧,只有重复性的内存泄露才值得花时间研究


[Quote=引用 3 楼 tiwafic 的回复:]
谢谢LS诸位..
额,居然用VLD没有检测出内存泄漏..

VS和VLD之间检测的结果不一致....

该信谁的...
[/Quote]
太乙 2011-03-29
  • 打赏
  • 举报
回复
valgrind
pengzhixi 2011-03-29
  • 打赏
  • 举报
回复
_CrtDumpMemoryLeaks()是不准确的。
tiwafic 2011-03-29
  • 打赏
  • 举报
回复
谢谢LS诸位..
额,居然用VLD没有检测出内存泄漏..

VS和VLD之间检测的结果不一致....

该信谁的...

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧