Source code of Windows XP (NT5)
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.
|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
heapdbg.hxx Win3 Heap Manager debug aid
FILE HISTORY: DavidHov 11/22/91 Created KeithMo 21-Apr-1992 Added multi-level stack backtrace. KeithMo 12-Aug-1992 Robustified stack backtrace a bit. */
#ifdef HEAPDEBUG
//
// This manifest constant controls the "depth" of the stack backtrace
// displayed when heap residue exists after an application has
// terminated.
//
// This value *must* be no greater than MAX_STACK_DEPTH (as
// #defined in NTRTL.H (currently 16, should be plenty).
//
// KEEP IN MIND THAT EACH BACKTRACE LEVEL REQUIRES AN ADDITIONAL
// FOUR BYTES OF STORAGE FOR *EVERY* HEAP ALLOCATION BLOCK!!
//
#define RESIDUE_STACK_BACKTRACE_DEPTH 4
struct HEAPTAG { struct HEAPTAG * _phtRight, * _phtLeft;
UINT _uSignature;
PVOID _pvRetAddr[RESIDUE_STACK_BACKTRACE_DEPTH]; UINT _cFrames; UINT _usSize; VOID Init() { _phtLeft = _phtRight = this; } VOID Link( HEAPTAG * phtAfter ) { _phtLeft = phtAfter; _phtRight = phtAfter->_phtRight; _phtRight->_phtLeft = this; phtAfter->_phtRight = this; } VOID Unlink() { _phtRight->_phtLeft = _phtLeft; _phtLeft->_phtRight = _phtRight; Init(); } };
extern HEAPTAG * pHeapBase;
#endif // HEAPDEBUG
extern VOID HeapResidueIter( UINT cMaxResidueBlocksToDump, BOOL fBreakIfResidue );
|