void outofmem()
int main()
不太懂這裡為什麼呼叫
set_new_handler就能儲存outofmem
感覺好奇怪,看了下vs裡面原始碼發現了
// handler.cpp -- set_new_handler for microsoft
#include
typedef int (__cdecl *new_hand)(size_t);
new_hand __cdecl _set_new_handler(new_hand);
_std_begin
static new_handler _new_handler; //儲存了set_new_handler傳進來的引數
int __cdecl _new_handler_inte***ce(size_t) _throw1(std::bad_alloc)
_crtimp2 new_handler __cdecl set_new_handler(new_handler pnew) _throw0()
new_handler _crtimp2 __cdecl set_new_handler
( int pnh
) throw()
_std_end
每次呼叫自定義的函式給set_new_handler後,都會把引數的函式傳給靜態函式_new_handler ,這樣new失敗後,每次都呼叫_new_handler函式,就可以做到設定自定義函式來處理new失敗的情形
了解new handler的行為
1.當operator new 無法滿足某一記憶體需求時,他會丟擲異常。以前它會返回乙個null指標,一些老的編譯器目前也會這樣做。當operator new 丟擲異常以反映乙個為滿足的記憶體需求之前,它會先呼叫乙個客戶指定的錯誤處理函式,乙個所謂的new handler。當operator new...
C 了解new handler的所作所為
1.在使用operator new申請記憶體失敗後,編譯器並不是不做任何的努力直接丟擲std bad alloc異常,在這之前,它會呼叫乙個錯誤處理函式 new handler 2.new handler函式的處理方式策略 1 operator new會進行多次的記憶體分配嘗試,這可能會使其下一次的...
動態規劃問題的筆記
組合問題公式 dp i dp i num true false問題公式 dp i dp i or dp i num 最大最小問題公式 dp i min dp i dp i num 1 或者dp i max dp i dp i num 1 以上三組公式是解決對應問題的核心公式。當然拿到問題後,需要做到...