是否可以使std容器使用默认运算符new?

时间:2018-01-06 19:52:42

标签: c++

我用自己的实现替换了"Tom"。我希望在我的程序中每次调用"Tom"时都使用operator new,但有些情况除外operator new容器。

是否可以使new容器使用默认的std?例如,std

1 个答案:

答案 0 :(得分:2)

简短的回答是“不”。

当任何编译单元替换operator new()时,它将被有效替换为程序中的所有编译单元。这意味着operator new()变体的所有使用或引用都将解决为替换。标准容器中的默认分配器与程序中的任何其他代码一样受到影响。

替换operator new()及其变体的方案是全有或全无,即您没有得到operator new()解析为默认版本以及其他解析为替换版本的一些用法。

您可以为容器提供一个分配器,它使用一些方法来获取替换operator new()以外的原始内存。