C++ 全局“新建”和“删除”运算符的定义

C++ 全局“新建”和“删除”运算符的定义,c++,new-operator,definition,delete-operator,C++,New Operator,Definition,Delete Operator,哪个库具有全局“新建”和“删除”操作符的定义?具体来说,库中的哪个文件包含这些运算符的定义?没有指定这些运算符的定义位置,但指定它们在标题中声明。(如果您只是使用非放置新的表达式使用的标准版本,则不必包含,所有翻译单元中都会自动提供这些表达式。)未指定这些表达式的定义位置,但指定它们在标题中声明。(如果您只是使用非放置的新表达式所使用的标准版本,则不必包含,所有翻译单元都会自动提供这些标准版本。)非放置的运算符新表达式和运算符删除表达式(及其数组形式)在每个翻译单元的全局范围内隐式声明 标准放置

哪个库具有全局“新建”和“删除”操作符的定义?具体来说,库中的哪个文件包含这些运算符的定义?

没有指定这些运算符的定义位置,但指定它们在标题
中声明。(如果您只是使用非放置
新的
表达式使用的标准版本,则不必包含
,所有翻译单元中都会自动提供这些表达式。)

未指定这些表达式的定义位置,但指定它们在标题
中声明。(如果您只是使用非放置的
新表达式所使用的标准版本,则不必包含
,所有翻译单元都会自动提供这些标准版本。)

非放置的
运算符新表达式
运算符删除表达式
(及其数组形式)在每个翻译单元的全局范围内隐式声明

标准放置表格在
中声明

库函数的定义通常不可用。您的供应商可能会提供来源,在这种情况下,他们将在那里的某个地方


尽管从您的评论中可以看出,您可能在谈论在新表达式中使用
new
,而不是分配内存的
operator new
函数。新表达式由编译器处理,生成对
运算符new
和对象构造函数的必要调用。可能在任何地方都不会有具体的实现;您需要查看编译器代码生成器的相关部分。

操作符new
和操作符delete
的非放置形式(及其数组形式)在每个翻译单元的全局范围内隐式声明

标准放置表格在
中声明

库函数的定义通常不可用。您的供应商可能会提供来源,在这种情况下,他们将在那里的某个地方


尽管从您的评论中可以看出,您可能在谈论在新表达式中使用
new
,而不是分配内存的
operator new
函数。新表达式由编译器处理,生成对
运算符new
和对象构造函数的必要调用。可能在任何地方都不会有具体的实现;您需要查看编译器代码生成器的相关部分。

这取决于您的实现。如果您要求编译器查看它们是如何生成的,那么它们在内部使用malloc()和free()。@SingerOfTheFall:这不一定是真的。新操作符必须分配内存,然后调用构造函数。应该为执行这些操作的新操作符定义。我特别寻找这个定义可用的文件。使用
new X
是内置在编译器中的,就像
if
switch
一样。
运算符new()
只处理内存分配。这取决于您的实现。如果您要求它查看它们是如何生成的,它们在内部使用malloc()和free()。@SingerOfTheFall:这不一定是真的。新运算符必须分配内存,然后调用构造函数。应该为执行这些操作的新操作符定义。我特别寻找这个定义可用的文件。使用
new X
是内置在编译器中的,就像
if
switch
一样。
运算符new()
只处理内存分配。@迈克:我可以像查看“malloc”、“printf”的代码一样查看它们的代码吗etc@LinuxPenseur:声明是隐式的,因此您无法看到它们。定义在源代码中的某个地方,您的库或编译器是从中生成的-这取决于供应商是否提供这些定义。@迈克:我可以像查看“malloc”、“printf”的代码一样查看它们的代码吗etc@LinuxPenseur:声明是隐式的,因此您无法看到它们。这些定义在源代码中的某个地方,您的库或编译器都是从中生成的,这取决于供应商是否提供这些定义。