C / C++ 检查内存泄露的方法

/************************************************************************/
// 用来检测程序是否内存泄露
// main函数结尾需要调用_CrtDumpMemoryLeaks();但是这样会出现析构函数中释放了内存
// 仍然出现内存泄露,解决办法,在main函数开头添加如下代码
// _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
// 也可使用atexit函数设置退出时的回调,程序退出时调用_CrtDumpMemoryLeaks,
// 返回值如果为非0,则表示有内存未释放
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
#define new DEBUG_CLIENTBLOCK
static void Exit()
{
	int i = _CrtDumpMemoryLeaks();
	assert( i == 0);
}
#define CheckMemoryLeaks() {atexit(Exit);}
 
#else
#define DEBUG_CLIENTBLOCK
#define CheckMemoryLeaks() ;
#endif
/************************************************************************/


int main()
{	
	CheckMemoryLeaks();
................................
}

转载于:https://my.oschina.net/mutour/blog/113958

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值