聚星亭

吾笨笨且懒散兮 急须改之而奋进
posts - 74, comments - 166, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

如何检测内存泄漏问题

Posted on 2011-12-18 21:29 besterChen 阅读(776) 评论(0)  编辑 收藏 引用 所属分类: 逆向分析WTL/MFC/GuiLib
      用C写程序,为了省事儿引用了别人一些代码,一调试程序发现:内存泄露了。程序代码量有点大,而且指针基本上都是用链表管理起来的,VC的调试器并不能给检查具体哪一行泄露。我想用C写程序的人这种情况一定跟我一样遇到过好多次,其中大多数人可能也跟我一样。依次注释和检查代码来排除这个问题~~

      最近,我又遇到了这个问题,本想到群中请教下别人有没好点儿的内存检查工具来辅助我排错,结果有幸让我得到了如下的方法:

引用原文
先查看系统的内存泄漏报告,如下:
Detected memory leaks!
Dumping objects ->
{1057} normal block at 0x01873BD0, 8 bytes long.
 Data: < <      > 1C 3C 87 01 F8 CD CD CD
strcore.cpp(118) : {1056} normal block at 0x01873C10, 45 bytes long.
 Data: <            31  > 01 00 00 00 02 00 00 00 20 00 00 00 33 31 00 CD
.....

然后在程序主程序的初始化中加入下列语句:
_CrtSetBreakAlloc(1057);
在中断时进行查找即可。
        这样再次启动程序时,申请 {1057} 这个内存时就会出发断点,然后栈回朔就可以定位到那个指针没释放了~~

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理