满足规则:
1、处理 0 大小的内存分配请求
2、具有一个无穷循环,用 while(true)
3、正确申请到内存,返回void*指针
4、不能申请到内存,调用 new_handler 处理,使用new_handler set_new_handler(void (*)())可以改变
5、如果new_handler==NULL,throw std::bad_alloc
全局的operator new
void* operator new(size_t size) throw(std::bad_alloc)
类特定的 operator new,3种
1) static void* operator new (size_t size) throw(std::bad_alloc)
2) friend void operator new (size_t size) throw (std::bad_alloc)
3) void * operator new (size_t size) throw(std::bad_alloc) //member function
placement new 则 有多余的 parameter ,size 由编译器自动赋值,其他的参数用户赋值,以下面的形式调用
new (<paraList>) Type;
operator delete
void operator delete(void* rawMemory) throw(); //normal signature at global scope
void operator delete(void* rawMemory,size_t size) throw(); //at class scope, need size_t parameter