new/delete操作符重载
Ø重载new和delete必须再关键字operator和操作符之间留下空格,及如下形式:operator new
Ø重载new第一个参数一定是size_t类型参数,函数必须返回无类型指针。
Ø重载delete第一个参数一定是一个无类型的指针,函数必须没有返回值。
void *operator new(size_tsize)
{
classname *p = (classname*)malloc(size);
return p;
}
void operator delete(void *object)
{
free((classname*)object);
object= NULL; //防止野指针
}
重载new[],delete[]
Øvoid*operator new[](size_tsize)
//size总比实际分配空间大4个字节,存放一些系统内部的处理数据,也就是delete[]释放内存时所需要的数据。
void *operator new[](size_tsize)
{
classname *p = (classname*)malloc(size);
return p;
}
void operator delete[](void *object)
{
free((classname*)object);
object= NULL;
}