c++内存泄漏处理(积累)

写c++程序时,常常会出现内存泄漏的问题,这里从网上找了一种非常麻烦的方法:假设想找到每一个cpp文件的内存泄漏,都必须在每一个cpp加上例如以下代码:

#include <crtdbg.h>
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK   new(_CLIENT_BLOCK, __FILE__, __LINE__)
#define new DEBUG_CLIENTBLOCK
#else
#define DEBUG_CLIENTBLOCK
#endif

以下给出一段測试的代码

test.h

#include <memory.h>

void funNew();
test.cpp

#include "text.h"

#include <crtdbg.h>
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK   new(_CLIENT_BLOCK, __FILE__, __LINE__)
#define new DEBUG_CLIENTBLOCK
#else
#define DEBUG_CLIENTBLOCK
#endif

void funNew()
{
	int *p = new int();
}
main.cpp

#include <iostream>
#include <assert.h>
#include "text.h"

#include <crtdbg.h>
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK   new(_CLIENT_BLOCK, __FILE__, __LINE__)
#define new DEBUG_CLIENTBLOCK
#else
#define DEBUG_CLIENTBLOCK
#endif

int main()
{
	_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

	int* p = new int();
	funNew();
	//delete p;
	return 0;
}

输出

Detected memory leaks!
Dumping objects ->
f:\project1\test.cpp(13) : {157} client block at 0x001E9180, subtype 0, 4 bytes long.
 Data: <    > 00 00 00 00 
f:\project1\main.cpp(17) : {156} client block at 0x001E9140, subtype 0, 4 bytes long.
 Data: <    > 00 00 00 00 
Object dump complete.






posted @ 2016-01-03 19:26  mengfanrong  阅读(397)  评论(0)    收藏  举报
众安尊享e升2025版 - 底部横幅广告
尊享e升 2025版
🚀 全新升级
百万医疗险全面升级 守护健康人生
✓ 一般医疗300万
✓ 重疾600万
✓ 6年保证续保
✓ 1万免赔额
600万
最高保障
首月特惠价
低至1元起
🛡️ 立即投保