7 #include "NewHandler.h"
9 // #define DEBUG_MEMORY_LEAK
11 #ifndef DEBUG_MEMORY_LEAK
18 operator new(size_t size)
20 // void *p = ::HeapAlloc(::GetProcessHeap(), 0, size);
21 void *p = ::malloc(size);
23 throw CNewException();
31 operator delete(void *p) throw()
36 ::HeapFree(::GetProcessHeap(), 0, p);
45 const int kDebugSize = 1000000;
46 static void *a[kDebugSize];
49 static int numAllocs = 0;
50 void * __cdecl operator new(size_t size)
53 void *p = HeapAlloc(GetProcessHeap(), 0, size);
58 if (index < kDebugSize)
64 throw CNewException();
65 printf("Alloc %6d, size = %8d\n", numAllocs, size);
74 for (int i = 0; i < kDebugSize; i++)
79 for (int i = 0; i < kDebugSize; i++)
86 void __cdecl operator delete(void *p)
91 for (int i = 0; i < index; i++)
95 HeapFree(GetProcessHeap(), 0, p);
97 printf("Free %d\n", numAllocs);
103 int MemErrorVC(size_t)
105 throw CNewException();
108 CNewHandlerSetter::CNewHandlerSetter()
110 // MemErrorOldVCFunction = _set_new_handler(MemErrorVC);
112 CNewHandlerSetter::~CNewHandlerSetter()
114 // _set_new_handler(MemErrorOldVCFunction);