Effective C++ ????????
???????????? ???????[ 2012/12/12 10:57:50 ] ????????
????????x??operator new???????
????1????????set_new_handler??????????????x??????????????????x??new-handler??????????new-handler??????????????????У?????"::"?????????????std??????set_new_handler??????????std?????
????2?????????operator new??????檔???????η??????????operator new?????x??new-handler?????????????1.?????????????new-handler????????operator new??δ???????棬?????std::bad_alloc????x??operator new?????????x??operator new?????????????????new-handler????????????????????
????3?????????operator new?????x????????????????? x??operator new????ε?????set_new_handler?????????????????????????????????????????
????c++??????????
void * x::operator new(size_t size)
{
new_handler globalhandler = // ???x??new_handler
std::set_new_handler(currenthandler);
void *memory;
try { // ??????????
memory = ::operator new(size);
}
catch (std::bad_alloc&) { // ??????new_handler
std::set_new_handler(globalhandler);
throw; // ?????
}
std::set_new_handler(globalhandler); // ??????new_handler
return memory;
}
?????????????????????std::set_new_handler????????????μ?????m9??????????
?????????x?????????????????????£?
void nomorememory();// x????????????????????new_handler??????????
x::set_new_handler(nomorememory);
// ??nomorememory?????x??
// new-handling????
x *px1 = new x;
// ????????????
// ????nomorememory
string *ps = new string;
// ???????????????????new-handling????
x::set_new_handler(0);
// ??x??new-handling???????
x *px2 = new x;
// ?????????????????????
// (??x???new-handling????)
??????????????????????????????????????????????????????????????????????????????????????????????41??????????к??????????????????????????????????????????????????????????????????
??????
![](/images/ad-banner/ad-banner.png)
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11