VC++内存泄漏的检测与定位

本文详细介绍了在MFC和非MFC程序中如何利用VC++的C运行库检测和定位内存泄漏,包括_MFCSETBREAKALLOC、_CrtSetDbgFlag等函数的使用方法,以及在不同环境下如何进行内存泄漏的调试和追踪。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VC++内存泄漏的检测与定位
 
 
本文大部分内容来自网络,只是做了适当的修改和补充,以便更贴近实际应用。
 
一 对于MFC程序
如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:
class CMyApp : public CWinApp
{
public:
BOOL InitApplication()
{
int* leak = new int[10];
return TRUE;
}
};
 
产生的内存泄漏报告大体如下:
Detected memory leaks!
Dumping objects ->
c:worktest.cpp(186) : {52} normal block at 0x003C4410, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
 
双击“输出”窗口中,内存泄漏报告的文字"c:worktest.cpp(186) : {52} normal block at 0x003C4410, 40 bytes long.",或者 在Debug窗口中逻辑按F4(VC++6.0),IDE就帮你定位到引起内存泄漏的对应文件的对应行,也就是这一句:
int* leak = new int[10];
特别地,如果这个new仅对应一条delete(或者你把delete漏写),这将很快可以确认问题的症结。
 
 
 
二 对于非MFC
需要做点工作,剩下的还是由VC++的C运行库去做。也就是说,只要你是VC++程序员,都可以很方便地检测内存泄漏。我们还是给个样例:
#include "crtdbg.h"
inlin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值