重写全局运算符:替换 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中文网其他相关文章!