简单内存泄漏检测方法 解决 Detected memory leaks! 问题
来源: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! 问题相关推荐
- 简单内存泄漏检测方法,解决Detected memory leaks!问题 .
工作环境:WIN7,VS2005: 最近一个项目中,程序退出后,每次都出现内存泄漏,每次退出的时候泄露的内存块都是1654,1650. Detected memory leaks! Dumping o ...
- Visual Studio 内存泄漏检测方法
Visual Studio 内存泄漏检测方法 非MFC程序可以用以下方法检测内存泄露: 1.程序开始包含如下定义: #ifdef _DEBUG #define DEBUG_CLIENTBLOCK ne ...
- Linux内存泄漏检测方法总结
Linux内存泄漏检测方法总结 一.mtrace分析内存泄露 mtrace原理 设置日志生成路径 测试实例 日志 泄露分析 使用addr2line工具定位源码位置 使用mtrace工具分析日志信息 二 ...
- 基于Android Studio的内存泄漏检测与解决全攻略
自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...
- c语言内存泄漏怎么测试,C语言内存泄漏检测方法
内存泄漏是C语言编程中一个很常见的问题,而且由于内存泄漏所导致的问题出现较缓慢,所以不容易觉察,所以写一个简单的程序来检测内存泄漏很有必要. 内存泄漏通常是指堆内存的泄漏,也就是通过malloc.ca ...
- 基于Android Studio的Android内存泄漏检测方法
自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...
- C++ 程序内存泄漏检测方法
一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成"统一&qu ...
- iOS 内存泄漏排查方法及原因分析
级别: ★★☆☆☆ 标签:「iOS」「内存泄漏排查」「Leaks工具」 作者: MrLiuQ 审校: QiShare团队 本文将从以下两个层面解决iOS内存泄漏问题: 内存泄漏排查方法(工具) 内存泄 ...
- c++ 内存泄漏(Detected memory leaks)解决
最近看到关于内存泄漏的查找的文章,供大家学习: Detected memory leaks!Dumping objects ->{98500} normal block at 0x05785AD ...
- C++ 内存泄漏检测工具valgrind简单使用
C++ 内存泄漏检测工具valgrind简单使用 目录 C++ 内存泄漏检测工具valgrind简单使用 valgrind安装 valgrind测试内存泄漏 valgrind安装 通过软件商店下载: ...
最新文章
- 自定义监听器 java
- 动态系统开发方法DSDM
- 多线程并发下的单例模式
- context:component-scan使用说明
- 什么是工资单上的variable pay mix?
- c语言标识符的词法形式,C语言词法器实验.doc
- 丘成桐中学计算机科学奖,丘成桐中学科学奖
- HDU.1010 Tempter of the Bone
- 2019春第六周作业
- python txt转Excel
- 奋斗吧,程序员——第二十九章 伤心桥下春波绿,疑是惊鸿照影来
- python实现小说分割器
- .Net Core——配置系统
- SIM卡检测信号故障分析
- 2022在线微信对话生成器源码,抖音微信聊天搞笑视频制作神器
- 10 场年薪 60W 的 DBA 面试,被问到最多的 10 道题
- 集群(1)---集群的概念
- 记一次授权的APK渗透测试
- 【超全】Go语言超详细学习知识体系
- starCTF2019-oob