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