分配功能定义

时间:2014-07-13 10:30:34

标签: c++

  

C ++程序最多只能提供一个可替换的定义   分配或解除分配功能。

该计划

int main(){ }

不提供任何定义,而是提供main,但它是有效的。 谁提供了分配或解除分配功能的定义?

2 个答案:

答案 0 :(得分:2)

正如引言所说,C ++程序最多只能提供 其中一个功能。你没有提供,所以没关系。在这种情况下,它使用标准库提供的默认分配和释放函数,如引号周围的句子所述:

  

该库提供全局分配和释放函数的默认定义。某些全局分配和释放函数是可替换的(18.6.1)。 C ++程序最多只能提供一个可替换分配或释放功能的定义。 任何此类函数定义都将替换库中提供的默认版本(17.6.4.6)。以下分配和释放函数(18.6)在程序的每个转换单元中的全局作用域中隐式声明。

void* operator new(std::size_t);
void* operator new[](std::size_t);
void operator delete(void*);
void operator delete[](void*);

答案 1 :(得分:1)

我不确定我理解你的问题,但standard也指明了以下内容:

  

任何此类函数定义都将替换库中提供的默认版本(17.6.4.6)。以下分配和   释放函数(18.6)在全局范围内隐式声明   在程序的每个翻译单元中:
      void * operator new(std :: size_t);
      void * operator new;
      void operator delete(void *);
      void operator delete;

我希望这能回答你的问题。