#if !defined(__HEAP_INCLUDED__) #define __HEAP_INCLUDED__ // get rid of baggage we don't need from windows.h #define WIN32_LEAN_AND_MEAN //#define NOGDI #define NOUSER #define NONLS #include #include #ifdef HeapDump #include #endif class Heap { Heap() { hheap = HeapCreate(HEAP_NO_SERIALIZE, 0, 0); dassert(hheap); } static Heap theHeap; public: ~Heap() { BOOL fT = HeapDestroy(hheap); dassert(fT); } static HANDLE hheap; }; inline void* __cdecl operator new (size_t size) { #ifdef HeapDump printf("Allocation size = %d\n", size); #endif return HeapAlloc(Heap::hheap, HEAP_NO_SERIALIZE, size); } enum FILL { zeroed = 0 }; inline void* __cdecl operator new(size_t size, FILL) { #ifdef HeapDump printf("Allocation size = %d\n", size); #endif return HeapAlloc(Heap::hheap, HEAP_NO_SERIALIZE | HEAP_ZERO_MEMORY, size); } inline void __cdecl operator delete (void *pv) { BOOL fT; // operator delete allows NULL parameter... must not pass to OS if (!pv) return; fT = HeapFree(Heap::hheap, HEAP_NO_SERIALIZE, pv); dassert(fT); } #endif /* __HEAP_INCLUDED__ */