条款8 写operator new 和operator delete 时要遵循常规
重写operator new时, 函数提供的行为要和系统缺省的operator new一致:
1)正确的返回值; 2)可用内存不够时调用出错处理函数; 3)处理0字节内存请求的情况; 避免隐藏标准形式的new;
1)如果内存分配请求成功, 返回指向内存的指针, 失败抛出std::bad_alloc异常;
operator new实际上不止一次尝试分配内存, 每次失败会调用出错处理函数(期望释放别处的内存), 只有在出错处理函数的指针为空的情况下才抛出异常.
Note 按C++标准要求, 在请求分配0字节的内存时, operator new也要......
阅读全文