#define _CRTDBG_MAP_ALLOC
#include <Windows.h>
#include <crtdbg.h>
#include <time.h>
#include <tchar.h>
inline void EnableMemLeakCheck()
{
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
}
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
int main()
{
HANDLE hLogFile;
hLogFile = CreateFile(_T("memleak.log"), GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, hLogFile);
//_CrtSetBreakAlloc(86);
//EnableMemLeakCheck();
_CrtMemState s1, s2, s3;
_CrtMemCheckpoint(&s1);
int num = 10;
while (num-->0)
{
int *p = new int[4096];
Sleep(200);
}
_CrtMemCheckpoint(&s2);
if (_CrtMemDifference(&s3,&s1,&s2))
{
_CrtMemDumpStatistics(&s3);
time_t t;
time(&t);
_RPT1(_CRT_WARN,"snapshot dump in %s",ctime(&t));
}
_CrtDumpMemoryLeaks();
return 0;
}