载的全球员new/delete C++
-
11-07-2019 - |
题
我试过载的全球员新的和删除一个敏感的性能的应用程序。我已经阅读的关切描述 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 new
和operator delete
,你只需要实现它。你不需要到处明确定义它,因为它已被定义为语言的一部分。
编辑:如果要定义一个新的运营商是采用不同的参数,那么你就需要到处#包括它。但是你这样做是给你;它主要是风格问题。
不要忘记实现全球运营商的所有变种new和delete:new
,new[]
,delete
,delete[]
和std::nothrow
变种
其他提示
如果您正在使用Visual Studio和使用预编译头,那么你就可以抛出包括到那里。我认为,GCC有某种形式的预编译头为好,这将提高你的编译时间为好。
不隶属于 StackOverflow