You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
#ifdef DEBUG /*** THIS WHOLE FILE ***/
|
|
|
|
unsigned long g_BreakAlloc = (unsigned long)-1;
|
|
|
|
/* U P D A T E C R T D B G S E T T I N G S */
|
|
/*-------------------------------------------------------------------------
|
|
%%Function: UpdateCrtDbgSettings
|
|
|
|
Update the C runtime debug memory settings
|
|
-------------------------------------------------------------------------*/
|
|
VOID UpdateCrtDbgSettings(void)
|
|
{
|
|
#if 0
|
|
// This depends on the use of the debug c runtime library
|
|
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
|
|
|
// Always enable memory leak checking debug spew
|
|
// tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
|
|
|
|
// Release memory just like the retail version
|
|
tmpFlag &= ~_CRTDBG_DELAY_FREE_MEM_DF;
|
|
|
|
// Don't bother checking the entire heap
|
|
tmpFlag &= ~_CRTDBG_CHECK_ALWAYS_DF;
|
|
|
|
_CrtSetDbgFlag(tmpFlag);
|
|
#endif // 0
|
|
}
|
|
|
|
#if 0
|
|
int _cdecl MyAllocHook ( int allocType, void *userData,
|
|
size_t size, int blockType,
|
|
long requestNumber, const char *filename, int lineNumber )
|
|
{
|
|
char buf[256];
|
|
wsprintf(buf, "%s {%d}: %d bytes on line %d file %s\n\r",
|
|
allocType == _HOOK_ALLOC ? "ALLOC" :
|
|
( allocType == _HOOK_REALLOC ? "REALLOC" : "FREE" ),
|
|
requestNumber,
|
|
size, lineNumber, filename );
|
|
OutputDebugString(buf);
|
|
return TRUE;
|
|
}
|
|
#endif // 0
|
|
|
|
/* I N I T D E B U G M E M O R Y O P T I O N S */
|
|
/*-------------------------------------------------------------------------
|
|
%%Function: InitDebugMemoryOptions
|
|
|
|
Initilize the runtime memory
|
|
-------------------------------------------------------------------------*/
|
|
BOOL InitDebugMemoryOptions(void)
|
|
{
|
|
#if 0
|
|
// _asm int 3; chance to set _crtBreakAlloc - use debugger or uncomment
|
|
_CrtSetBreakAlloc(g_BreakAlloc);
|
|
|
|
UpdateCrtDbgSettings();
|
|
|
|
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); // create a message box on errors
|
|
|
|
{ // To track down memory leaks, set cAlloc to the allocation number
|
|
LONG cAlloc = 0; // Allocation number
|
|
if (0 != cAlloc)
|
|
_CrtSetBreakAlloc(cAlloc);
|
|
}
|
|
|
|
#ifdef MNMSRVC_SETALLOCHOOK
|
|
_CrtSetAllocHook ( MyAllocHook );
|
|
#endif // MNMSRVC_SETALLOCHOOK
|
|
#endif // 0
|
|
return TRUE;
|
|
}
|
|
|
|
VOID DumpMemoryLeaksAndBreak(void)
|
|
{
|
|
#if 0
|
|
if ( _CrtDumpMemoryLeaks() )
|
|
{
|
|
// _asm int 3; Uncomment to break after leak spew
|
|
}
|
|
#endif // 0
|
|
}
|
|
|
|
#endif /* DEBUG - whole file */
|
|
|