在实际调试中为了调试方便,我们通常重载一些库函数,在这篇文章中我会重载operator new和operator delete(注意不是new operator和delete operator),让它们可以打印出一些额外信息(程序通过VS2008编译运行)
#include <iostream>
void* operator new(std::size_t size,char* file,int line)//重载了operator new,注意返回值
{
std::cout<<size<<"\t"<<file<<"\t"<<line<<std::endl;
return ::operator new(size);
}
void operator delete(void* p,int line)//重载了operator delete,注意返回值
{
std::cout<<"delete:"<<line<<std::endl;
::operator delete(p);
return ;
}
#define new new(__FILE__,__LINE__)//为了调用方便,写了宏重定义
int main(void)
{
char* p = new char[10];
operator delete(p,__LINE__);
system("pause");
return NULL;
}