龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 1461|回复: 0

C++ 内存泄漏检测

[复制链接]

21

主题

0

回帖

26

积分

编程入门

Rank: 1

龙马币
52
C++ 内存泄漏检测

检测内存泄漏的方法多种多样,有使用内存泄漏检测工具(比如BoundsChecker)检测内存泄漏;有直接看代码检测代码逻辑,看那些地方是否没有释放内存。一般地静态内存泄漏通过工具与代码检查很容易找到泄漏点;动态的内存泄漏很难查,一般通过在代码中加断点跟踪和Run-Time内存检测工具来查找。
总的来说,要检查内存泄漏分几个步骤:
1、首先写代码时要控制内存的释放,比如new之后要delete,看析构函数是否真的执行(很多人编写释放内存的代码在析构函数中处理的),如果没有真正执行,就需要动态释放对象;前段时间在一个项目中使用了单例模式对象,将构造函数和析构函数设置成保护类型,在运行代码时退出时不执行到析构函数里面(具体也不知道什么原因),最后只有手动删除对象。
2、其次让程序长时间运行,看任务管理器对应程序内存是不是一直向上增加;
3、最后使用常用内存泄漏检测工具来检测内存泄漏点。
文本主要描述一些内存泄漏检测工具功能介绍与简单使用方法。

一、对于VS2005/VS2008编译器自带的内存检测工具/函数。在 main() 函数开头加上:#include "crtdbg.h"_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);

二、用BoundsChecker之类的工具。
BoundsChecker 是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误。BoundsChecker能检测的错误包括:
1、指针操作和内存、资源泄露错误,比如:
内存泄露;
资源泄露;
对指针变量的错误操作。
2、内存操作方面的错误,比如:
内存读、写溢出;
使用未初始化的内存。
3、API函数使用错误

三、linux下可以用valgrind检测内存泄露错误。

四、purify工具,这个是专门检测内存的,包括泄露、越界、指针跑飞等都可以检查,在VC上使用方便。

五、用Windbg,试过查句柄泄漏的,比较方便。

六、Visual Leak Detector
Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。可以在http://www.codeproject.com/tools/visualleakdetector.asp 下载到。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:
1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;
2、 可以得到泄露内存的完整数据;
3、 可以设置内存泄露报告的级别;
4、 它是一个已经打包的lib,使用时无须编译它的源代码。而对于使用者自己的代码,也只需要做很小的改动;
5、 他的源代码使用GNU许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。
具体详细信息参考:http://www.codeproject.com/KB/applications/visualleakdetector.aspx
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表