替换函数'operator new'不能声明'内联'[-Werror,-Winline-new-delete]

时间:2015-07-04 11:29:35

标签: c++ clang inline new-operator

使用clang时出现此错误。 为什么operator new不能内联声明?

pthread_create

1 个答案:

答案 0 :(得分:3)

整个程序中分配函数的所有使用都必须兼容。在一个翻译单元中使用operator new分配的内容必须在另一个TU中与operator delete取消分配。因此,程序必须在任何地方都给出相同的实现,并且替换分配函数不是TU本地事务,而是全局选择。

因此,而不是要求每个TU包含相同的代码(这将破坏静默,非侵入性替换和违反其极难诊断的目的),而要求的是该功能具有外部链接和不要内联。

将分配函数视为程序全局状态的一部分。