#define TRACE_MEM #ifdef TRACE_MEM #define MEM_NEW new(__FILE__, __LINE__) #define MEM_DELETE delete #else #define MEM_NEW new #define MEM_DELETE delete #endif #ifdef TRACE_MEM inline void * __cdecl operator new(unsigned int size, const char *file, int line) { void* tmp = (void*)malloc(size); return tmp; } inline void * __cdecl operator new[](unsigned int size, const char *file, int line) { void* tmp = (void*)malloc(size); return tmp; } inline void __cdecl operator delete(void *p) { free(p); } inline void __cdecl operator delete[](void *p) { free(p); } #endif class A { public: int i; public: A(int a) { i = a; } A() { } ~A() { } }; int main() { int* a = MEM_NEW int; int* b = MEM_NEW int[10]; A* c = MEM_NEW A; A* d = MEM_NEW A(1); A* e = MEM_NEW A[10]; MEM_DELETE a; MEM_DELETE[] b; MEM_DELETE c; MEM_DELETE d; MEM_DELETE e; return 0; }