来源:http://www.cnblogs.com/G_Weber/archive/2009/04/15/1436362.html

我的环境是: XP SP2 . VS2003

最近在一个项目中,程序退出后都出现内存泄漏:

Detected memory leaks!
Dumping objects ->
{98500} normal block at 0x05785AD0, 152 bytes long.
Data: << N       N x 7 > 3C AC 4E 10 00 00 00 00 BC A4 4E 10 78 B6 37 00
Object dump complete.
 

而且每次退出都是一样的.泄漏的内存块都是98500.

解决方法:

1. 在程序开始启动的地方(足够前的地方,只要在泄漏的内存分配的前面)使用代码:

_CrtSetBreakAlloc(98500); //98500为上面内存泄漏的块号.

2. 然后debug运行,程序自动断点在"内存块98500"分配的位置:

/* break into debugger at specific memory allocation */
if (_crtBreakAlloc != -1L && lRequest == _crtBreakAlloc)
_CrtDbgBreak();
 

3 .我们已经找到了泄漏的那块内存分配的底层操作的地方了(好拗口!).

这个时候我们利用 "调试" –> "退出" ,快捷键为:"Shift + F11" .

跳出当前函数..然后一直往"上"跳,边跳边查看调用栈.直到看到了自己写的代码,例如我的

std::ifstream* origStream = new std::ifstream();
 

4 .这个时候我已经可以判断 origStream 分配了内存,但是没有合理释放.处理后再次运行就没有出现内存泄漏了.

5.最后,记得把_CrtSetBreakAlloc(98500); 这句话删除掉,不然每次都断点,岂不是烦死..

----------------------------------------------------------------------------------------------------------

写在后面:

关于内存泄漏检测,有一个Visual Leak Detector ,按照它的介绍的确很不错,可以直接具体到代码行指出内存泄漏,但是个人使用了一下,发现debug的速度太慢了,不知道是不是我个人程序的问题.......像上面的泄漏,我用CrtSetBreakAlloc这种简单的方法就足够了....

By: 洪庚伟

简单内存泄漏检测方法 解决 Detected memory leaks! 问题相关推荐

  1. 简单内存泄漏检测方法,解决Detected memory leaks!问题 .

    工作环境:WIN7,VS2005: 最近一个项目中,程序退出后,每次都出现内存泄漏,每次退出的时候泄露的内存块都是1654,1650. Detected memory leaks! Dumping o ...

  2. Visual Studio 内存泄漏检测方法

    Visual Studio 内存泄漏检测方法 非MFC程序可以用以下方法检测内存泄露: 1.程序开始包含如下定义: #ifdef _DEBUG #define DEBUG_CLIENTBLOCK ne ...

  3. Linux内存泄漏检测方法总结

    Linux内存泄漏检测方法总结 一.mtrace分析内存泄露 mtrace原理 设置日志生成路径 测试实例 日志 泄露分析 使用addr2line工具定位源码位置 使用mtrace工具分析日志信息 二 ...

  4. 基于Android Studio的内存泄漏检测与解决全攻略

    自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...

  5. c语言内存泄漏怎么测试,C语言内存泄漏检测方法

    内存泄漏是C语言编程中一个很常见的问题,而且由于内存泄漏所导致的问题出现较缓慢,所以不容易觉察,所以写一个简单的程序来检测内存泄漏很有必要. 内存泄漏通常是指堆内存的泄漏,也就是通过malloc.ca ...

  6. 基于Android Studio的Android内存泄漏检测方法

    自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...

  7. C++ 程序内存泄漏检测方法

    一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成"统一&qu ...

  8. iOS 内存泄漏排查方法及原因分析

    级别: ★★☆☆☆ 标签:「iOS」「内存泄漏排查」「Leaks工具」 作者: MrLiuQ 审校: QiShare团队 本文将从以下两个层面解决iOS内存泄漏问题: 内存泄漏排查方法(工具) 内存泄 ...

  9. c++ 内存泄漏(Detected memory leaks)解决

    最近看到关于内存泄漏的查找的文章,供大家学习: Detected memory leaks!Dumping objects ->{98500} normal block at 0x05785AD ...

  10. C++ 内存泄漏检测工具valgrind简单使用

    C++ 内存泄漏检测工具valgrind简单使用 目录 C++ 内存泄漏检测工具valgrind简单使用 valgrind安装 valgrind测试内存泄漏 valgrind安装 通过软件商店下载: ...

最新文章

  1. 自定义监听器 java
  2. 动态系统开发方法DSDM
  3. 多线程并发下的单例模式
  4. context:component-scan使用说明
  5. 什么是工资单上的variable pay mix?
  6. c语言标识符的词法形式,C语言词法器实验.doc
  7. 丘成桐中学计算机科学奖,丘成桐中学科学奖
  8. HDU.1010 Tempter of the Bone
  9. 2019春第六周作业
  10. python txt转Excel
  11. 奋斗吧,程序员——第二十九章 伤心桥下春波绿,疑是惊鸿照影来
  12. python实现小说分割器
  13. .Net Core——配置系统
  14. SIM卡检测信号故障分析
  15. 2022在线微信对话生成器源码,抖音微信聊天搞笑视频制作神器
  16. 10 场年薪 60W 的 DBA 面试,被问到最多的 10 道题
  17. 集群(1)---集群的概念
  18. 记一次授权的APK渗透测试
  19. 【超全】Go语言超详细学习知识体系
  20. starCTF2019-oob

热门文章

  1. 隐马尔可夫模型(三): 算法分类、解决方法
  2. 漫谈CRM体系化建设1 – CRM与客户管理综述
  3. 解决打开一个excel文件,却出现两个窗口的办法
  4. java swing GUI窗口美化
  5. VBA金额转换中文大写(原创新解版)
  6. linux安装系统时安装多路径包,红帽子linux安装配置多路径
  7. 关于ireport中文不显示问题
  8. 13-4Happy Mid-Autumn Festival
  9. angularJS入门与进阶(笔记1)
  10. PLM教程:CAXA 3D 与 PLM 的集成应用