C ++程序最多只能提供一个可替换的定义 分配或解除分配功能。
该计划
int main(){ }
不提供任何定义,而是提供main
,但它是有效的。
谁提供了分配或解除分配功能的定义?
答案 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;
我希望这能回答你的问题。