#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;
}