当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在C++中重载全局运算符new/delete》经验,为你挑选了1个好方法。

我正在尝试重载全局运算符new和删除性能敏感的应用程序.我已经阅读了http://www.informit.com/articles/article.aspx?p=30642&seqNum=3中描述的问题以及使用英特尔TBB分配器的建议http://www.intel.com/technology/itj/ 2007/v11i4/5-基金会/ 5-memory.htm

由于我第一次超载新的和删除,我有几个问题.

我应该在包含"新"调用的所有文件中包含我的新标题Allocator.h(或Pre.h),其中包含重载的新函数吗?这很乏味.

或者我应该在每个翻译单元中使用包含Allocator.h(之前)的"gcc -include Allocator.h ..."?我希望尽可能保持代码平台的独立性.所有编译器都支持类似于"gcc -include"的东西吗?



1> MSN..:

如果你想重载全局operator newoperator delete,你只需要实现它.您不需要在任何地方明确定义它,因为它已经被定义为语言的一部分.

编辑:如果你想定义一个带有不同参数的operator new,那么你需要#include它到处都是.但是你这样做取决于你; 这主要是风格问题.

而且不要忘记实现全球运营商的所有变种new和delete: ,new,new[],delete,delete[]std::nothrow变种.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有