现在的位置: 首页 > 综合 > 正文

内存泄露打印new和delete重载

2013年06月04日 ⁄ 综合 ⁄ 共 701字 ⁄ 字号 评论关闭
#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;
}

抱歉!评论已关闭.