Leaked source code of windows server 2003
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.
|
|
/*****************************************************************************
* * mem.h * *****************************************************************************/
/*****************************************************************************
* * Arenas * * Memory is allocated in chunks called arenas. Arenas contain extra * bookkeeping in DEBUG to help catch common memory problems like * overruns and memory leaks. (It doesn't catch dangling pointers, * though.) * *****************************************************************************/
typedef unsigned TM; /* Artificial time */
typedef struct ARENA AR, *PAR;
struct ARENA { #ifdef DEBUG
PAR parNext; /* Next arena */ PAR parPrev; /* Previous arena */ CB cb; /* Size of rgb */ TM tm; /* Timestamp used to track memory leaks */ #endif
BYTE rgb[4]; /* The actual data */ };
typedef CONST AR *PCAR;
#define parPv(pv) pvSubPvCb(pv, offsetof(AR, rgb))
#ifdef DEBUG
extern TM g_tmNow; extern AR g_arHead; #define parHead (&g_arHead)
#endif
#ifdef DEBUG
void STDCALL AssertPar(PCAR par); #else
#define AssertPar(par)
#endif
void STDCALL FreePv(PVOID pv); PVOID STDCALL pvAllocCb(CB cb); PVOID STDCALL pvReallocPvCb(PVOID pv, CB cb);
INLINE PTCH STDCALL ptchAllocCtch(CTCH ctch) { return pvAllocCb(cbCtch(ctch)); }
INLINE PTCH STDCALL ptchReallocPtchCtch(PTCH ptch, CTCH ctch) { return pvReallocPvCb(ptch, cbCtch(ctch)); }
/*****************************************************************************
* * Garbage collection * *****************************************************************************/
#ifdef DEBUG
void STDCALL Gc(void); #else
#define Gc()
#endif
|