/*----------------------------------------------------------------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;就可以解决内存泄露的问题了。(及时释放)-----------------------------------------------------------------------------------------*/

评论