代码之家  ›  专栏  ›  技术社区  ›  amit kumar

C中重载全局运算符new/delete++

  •  8
  • amit kumar  · 技术社区  · 17 年前

    http://www.informit.com/articles/article.aspx?p=30642&seqNum=3 以及使用英特尔TBB分配器的建议 http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm

    由于我是第一次重载新建和删除,我有几个问题。

    我应该在所有包含“new”调用的文件中包含包含重载新函数的新标头Allocator.h(或Pre.h)吗?这太乏味了。

    2 回复  |  直到 14 年前
        1
  •  14
  •   MSN    17 年前

    如果你想让全球超载 operator new operator delete ,你只需要实现它。你不需要在任何地方都明确地定义它,因为它已经被定义为语言的一部分。

    编辑:如果你想定义一个接受不同参数的运算符new,那么你需要在所有地方#包含它。不管你怎么做,这取决于你;这主要是风格的问题。

    不要忘记实现全局运算符new和delete的所有变体: new , new[] , delete , delete[] ,以及 std::nothrow 变体。

        2
  •  2
  •   wchung    17 年前

    如果您正在使用Visual Studio并使用预编译头文件,则可以将include放入其中。我认为gcc也有某种形式的预编译头文件,这也会缩短编译时间。