重載debug版本的operator new和operator delete

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


 


 

 

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章