/************************************************************************/
// 用来检测程序是否内存泄露
// 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();
................................
}