挂钩的新/删除c++

  • 本文关键字:删除 c++ c++
  • 更新时间 :
  • 英文 :


我正在尝试在c++中挂钩新的/删除当涉及到malloc/free时,它很简单:只需读取它:http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html

但是,c++中的new/delete分配呢?

注:我指的是g++/GCC

同样简单,只需重载new/new[]/delete/delete[]函数:

void* operator new(size_t size)
void* operator new[](size_t size)
void  operator delete(void* ptr)
void  operator delete[](void* ptr)

参见重载全局操作符new和delete有关默认new/delete函数

的更多信息,请参阅此处

全局重载new和delete操作符。我在下面写了一个简单的例子。

void * operator new(size_t size){
    int *p=(int*)malloc(size);
    cout<<*p<<" "<<p<<endl;
    return p;
}
void operator delete(void *p)
{   free(p);
}
void * operator new[](size_t size){
    void *p=malloc(size);
    return p;
}
void operator delete[](void *p){
     free(p);
}

最新更新