我试过载的全球员新的和删除一个敏感的性能的应用程序。我已经阅读的关切描述 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

因为我负载过重新删除第一次,我有几个问题。

我应该包括我的新标题分配器。h(或Pre。h)含有超载新的功能的所有文件中包含的"新"电话?这是繁琐。

或者我应该使用"海湾合作委员会-包括分配器。h...",其中包括分配器。h(之前)为各翻译单位?我想保持码平台的独立尽可能多的。做所有的编译器支持的东西,类似于"海湾合作委员会-包括"?

有帮助吗?

解决方案

如果你想重载全球operator newoperator delete,你只需要实现它。你不需要到处明确定义它,因为它已被定义为语言的一部分。

编辑:如果要定义一个新的运营商是采用不同的参数,那么你就需要到处#包括它。但是你这样做是给你;它主要是风格问题。

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

其他提示

如果您正在使用Visual Studio和使用预编译头,那么你就可以抛出包括到那里。我认为,GCC有某种形式的预编译头为好,这将提高你的编译时间为好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top