Annotation of elwix/tools/oldlzma/SRC/Common/NewHandler.cpp, revision 1.1.1.1
1.1 misho 1: // NewHandler.cpp
2:
3: #include "StdAfx.h"
4:
5: #include "NewHandler.h"
6:
7: // #define DEBUG_MEMORY_LEAK
8:
9: #ifndef DEBUG_MEMORY_LEAK
10:
11: #include <stdlib.h>
12:
13: void * __cdecl operator new(size_t size)
14: {
15: // void *p = ::HeapAlloc(::GetProcessHeap(), 0, size);
16: void *p = ::malloc(size);
17: if (p == 0)
18: throw CNewException();
19: return p;
20: }
21:
22: void __cdecl operator delete(void *p)
23: {
24: /*
25: if (p == 0)
26: return;
27: ::HeapFree(::GetProcessHeap(), 0, p);
28: */
29: ::free(p);
30: }
31:
32: #else
33:
34: #pragma init_seg(lib)
35: const int kDebugSize = 1000000;
36: static void *a[kDebugSize];
37: static int index = 0;
38:
39: static int numAllocs = 0;
40: void * __cdecl operator new(size_t size)
41: {
42: numAllocs++;
43: void *p = HeapAlloc(GetProcessHeap(), 0, size);
44: if (index == 40)
45: {
46: int t = 1;
47: }
48: if (index < kDebugSize)
49: {
50: a[index] = p;
51: index++;
52: }
53: if (p == 0)
54: throw CNewException();
55: printf("Alloc %6d, size = %8d\n", numAllocs, size);
56: return p;
57: }
58:
59: class CC
60: {
61: public:
62: CC()
63: {
64: for (int i = 0; i < kDebugSize; i++)
65: a[i] = 0;
66: }
67: ~CC()
68: {
69: for (int i = 0; i < kDebugSize; i++)
70: if (a[i] != 0)
71: return;
72: }
73: } g_CC;
74:
75:
76: void __cdecl operator delete(void *p)
77: {
78: if (p == 0)
79: return;
80: /*
81: for (int i = 0; i < index; i++)
82: if (a[i] == p)
83: a[i] = 0;
84: */
85: HeapFree(GetProcessHeap(), 0, p);
86: numAllocs--;
87: printf("Free %d\n", numAllocs);
88: }
89:
90: #endif
91:
92: /*
93: int MemErrorVC(size_t)
94: {
95: throw CNewException();
96: // return 1;
97: }
98: CNewHandlerSetter::CNewHandlerSetter()
99: {
100: // MemErrorOldVCFunction = _set_new_handler(MemErrorVC);
101: }
102: CNewHandlerSetter::~CNewHandlerSetter()
103: {
104: // _set_new_handler(MemErrorOldVCFunction);
105: }
106: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>