週末是 Yoyo 期待已久的公司團旅!但當初規劃的讀書進度依然要執行,於是這兩天就簡單講解觀念即可。
C++ 中,當 new
無法分配記憶體時,會拋出 std::bad_alloc
異常。不過在那之前會先呼叫稱為 new-handler
的函式。
new-handler
提供了優雅處理記憶體的機制,允許程式在需要時釋放更多記憶體,避免程式直接崩潰。其有以下幾個責任:
new-handler
,新的 handler 可能會採取更積極的策略。std::bad_alloc
或其他適當異常。abort()
或 exit()
終止程式。std::set_new_handler
可設置全域的 handler,亦能通過為特定類別重載運算子 new
來實現類別專屬的 new-handler
,針對該類型的記憶體分配提供更細緻的控制。而當記憶體分配失敗時,指定的 new-handler 便會被觸發執行。
new
and delete
new
和 delete
可以針對特定需求提供靈活且高效的記憶體管理,從而提升程式的效能與可靠性。自定義的 new
和 delete
則為一些特定場景提供了優勢。