//17:38 2009-4-26
//重载operator new 和 operator delete,跟踪对象的生命
//======================================
#include <memory>
#include <iostream>
using namespace std;
void* operator new(size_t sz, const char* sfile, unsigned int unline)
{
void *p = malloc(sz);
if(p != NULL)
{
printf("new %p: %d < %s,line:%d >/n", p, sz, sfile, unline);
return p;
}
return NULL;
}
void operator delete(void* pm, const char*sfile, unsigned int unline)
{
if(pm != NULL)
{
printf("delete %p < %s,line:%d >/n", pm, sfile, unline);
free(pm);
//printf("delete int %p /n", pm);
}
}
#define MD_new new(__FILE__, __LINE__)
#define MD_delete(a) operator delete(a, __FILE__, __LINE__)
int main(void)
{
char *pp = MD_new char[5];
MD_delete(pp);
char c = getchar();
return 0;
}