MFC工程检测内存泄露方法

本文介绍了两种在MFC工程中检测内存泄漏的方法。方法1是在InitInstance函数中设置_CrtSetDbgFlag来开启内存泄漏检查,并指定_BreakAlloc的内存块编号。方法2是通过逐步注释代码模块,逐步缩小内存泄漏源的位置。这两种方法有助于定位和解决MFC程序中的内存管理问题。
摘要由CSDN通过智能技术生成


方法1

在InitInstance函数开始处添加

    _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
    _CrtSetBreakAlloc(4964);

其中4964为退出程序时,提示内存泄露对应的号。

Detected memory leaks!
Dumping objects ->
{4964} normal block at 0x0519FFB0, 16 bytes long.
 Data: <I       v       > 49 02 00 00 A9 01 00 00 76 02 00 00 CC 01 00 00 
{4945} normal block at 0x0519FA78, 16 bytes long.
 Data: <v               > 76 02 00 00 A9 01 00 00 A3 02 00 00 CC 01 00 00 
{4926} normal block at 0x0519F540, 16 bytes long.
 Data: <        I       > 1C 02 00 00 A9 01 00 00 49 02 00 00 CC 01 00 00 
{4907} normal block at 0x0519F008, 16 bytes long.
 Data: <I       v       > 49 02 00 00 CC 01 00 00 76 02 00 00 EF 01 00 00 


再次运行程序,则程序会在分配4964号对应的内存位置break掉。通过查看调用堆栈,就可以知道分配哪块内存区域时

出错,此时确认此此分配的内存空间是否是否。


方法2

由于有时提示的内存泄露号会变化,此时较麻烦,就需要细活了。

逐步的注释模块,缩小内存泄露位置的范围。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值