重寫全域運算子:取代new 和delete
在複雜的程式碼庫中,確保自訂new 和delete 運算子的一致使用可能具有挑戰性。一個問題是外部函式庫和 STL 使用可能會繞過自訂記憶體管理。
可以實現全域替換,而不是在多個檔案中包含重載。連結定義這些運算子的單獨翻譯單元 (TU)。此TU提供以下功能:
<code class="cpp">void * operator new(std::size_t n) throw(std::bad_alloc); void operator delete(void * p) throw();</code>
包括
<code class="cpp">void * operator new(decltype(sizeof(0)) n) noexcept(false);</code>
透過連結此 TU,自訂 new 和 delete 運算子在整個過程中都處於活動狀態該程序,確保一致的使用和改進的診斷能力。
以上是如何覆蓋 C 中的全域“new”和“delete”運算符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!