在實際調試中爲了調試方便,我們通常重載一些庫函數,在這篇文章中我會重載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;
}