正文

VC中检测内存泄露的代码2008-08-31 16:26:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vfdff/37986.html

分享到:

/*----------------------------------------------------------------VC中检测内存泄露的代码:在申请了动态内存空间后常常会忘记在不用的时候释放,这样会造成内存的浪费等其他问题。怎样检查你的代码有没有内存泄露呢? 需要在前面加上这些代码:#ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>#include <string.h>#include <stdio.h>#ifdef _DEBUG#define new DEBUG_CLIENTBLOCK#endif然后在要检测的代码前面加上:_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );在后面加上:_CrtDumpMemoryLeaks();-------------------------------------------------------------------*/#ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>#include <string.h>#include <stdio.h>#ifdef _DEBUG#define new DEBUG_CLIENTBLOCK#endifint main(){    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );    int *p;    p = new int;    _CrtDumpMemoryLeaks();    return 0;}/*----------------------------------------------------------------然后按F5进行调试,会发现输出框中显示:Detected memory leaks!Dumping objects ->e:\microsoft visual c++\myprojects\临时\main.cpp(20) : {41} client block at 0x003707B8, subtype 0, 4 bytes long.Data: <    > CD CD CD CDObject dump complete.Detected memory leaks!Dumping objects ->e:\microsoft visual c++\myprojects\临时\main.cpp(20) : {41} client block at 0x003707B8, subtype 0, 4 bytes long.Data: <    > CD CD CD CDObject dump complete.The thread 0xD18 has exited with code 0 (0x0).就说明有内存泄露。解决的方法是把代码改成:    int *p;    p = new int;    delete p;就可以解决内存泄露的问题了。(及时释放)-----------------------------------------------------------------------------------------*/

阅读(6731) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册