条款51:编写 new 和 delete 时需固守常规
void* operator new(std::size_t size) throw(std::bad_alloc) {
using namespace std;
if (size == 0) {
size = 1;
}
while (true) {
尝试分配 size_t bytes;
if(分配成功)
return 一个指针,指向那块内存;
new_handler globalHandler = set_new_handler(0);
set_new_handler(globalHandler);
if (globalHandlder)
(*globalHandler)();
else
throw std::bad_alloc();
}
}Last updated