的更多信息,请参阅此处
我正在尝试在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);
}