您的位置:首页 > 其它

内存泄露打印new和delete重载

2012-06-01 18:05 141 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: