C++ C++;分配标准?

C++ C++;分配标准?,c++,C++,假设我有一个类Foo和一个函数栏 void Bar(void) { Foo a(); } 这是否意味着不需要在主内存中分配内存? 或者这是否取决于编译器,因此编译器可能会分配内存并产生与我们编写的Foo*a=newfooFoo a()相同的结果是一个函数声明。它应该是fooa;并且a在堆栈的内存中。fooa()是一个函数声明。它应该是fooa;并且a在堆栈的内存中。fooa()是一个函数声明。它应该是fooa;并且a在堆栈的内存中。fooa()是一个函数声明。它应该是fooa;而a在堆栈的内存

假设我有一个类Foo和一个函数栏

void Bar(void)
{
Foo a();
}
这是否意味着不需要在主内存中分配内存?
或者这是否取决于编译器,因此编译器可能会分配内存并产生与我们编写的
Foo*a=newfoo
Foo a()相同的结果是一个函数声明。它应该是
fooa
;并且
a
在堆栈的内存中。

fooa()是一个函数声明。它应该是
fooa
;并且
a
在堆栈的内存中。

fooa()是一个函数声明。它应该是
fooa
;并且
a
在堆栈的内存中。

fooa()是一个函数声明。它应该是
fooa
;而
a
在堆栈的内存中。

您要查找的术语是一个自动变量。这意味着该变量中包含的对象保证在作用域结束时自动销毁

使用
new
时,仅当
显式删除对象时(或显式使用负责销毁对象的机制,如智能指针),对象才会被销毁。换句话说,生命周期是手动管理的


当然,在任何情况下,自动生存期语义都不同于手动语义。也就是说,存储位置(堆栈、堆、寄存器或其他)在这两种情况下都是不相关的。

您要查找的术语是一个自动变量。这意味着该变量中包含的对象保证在作用域结束时自动销毁

使用
new
时,仅当
显式删除对象时(或显式使用负责销毁对象的机制,如智能指针),对象才会被销毁。换句话说,生命周期是手动管理的


当然,在任何情况下,自动生存期语义都不同于手动语义。也就是说,存储位置(堆栈、堆、寄存器或其他)在这两种情况下都是不相关的。

您要查找的术语是一个自动变量。这意味着该变量中包含的对象保证在作用域结束时自动销毁

使用
new
时,仅当
显式删除对象时(或显式使用负责销毁对象的机制,如智能指针),对象才会被销毁。换句话说,生命周期是手动管理的


当然,在任何情况下,自动生存期语义都不同于手动语义。也就是说,存储位置(堆栈、堆、寄存器或其他)在这两种情况下都是不相关的。

您要查找的术语是一个自动变量。这意味着该变量中包含的对象保证在作用域结束时自动销毁

使用
new
时,仅当
显式删除对象时(或显式使用负责销毁对象的机制,如智能指针),对象才会被销毁。换句话说,生命周期是手动管理的


当然,在任何情况下,自动生存期语义都不同于手动语义。这就是说,在这两种情况下,存储位置(堆栈、堆、寄存器或其他内容)都是不相关的。

从技术上讲,如果
a
适合寄存器,它最终可能会使用“无内存”。否则,它将被分配到堆栈上,我称之为“主内存”,与
Foo*a=newfoo的内存类型相同,但另一部分[
new
使用堆内存,堆栈与堆不同,而是相同类型的内存]


当然,如果类
Foo
包含一个构造函数,它本身就可以调用
new
和所有其他可能改变或不改变内存使用情况的函数…

从技术上讲,如果
a
适合寄存器,它可能最终使用“无内存”。否则,它将被分配到堆栈上,我称之为“主内存”,与
Foo*a=newfoo的内存类型相同,但另一部分[
new
使用堆内存,堆栈与堆不同,而是相同类型的内存]


当然,如果类
Foo
包含一个构造函数,它本身就可以调用
new
和所有其他可能改变或不改变内存使用情况的函数…

从技术上讲,如果
a
适合寄存器,它可能最终使用“无内存”。否则,它将被分配到堆栈上,我称之为“主内存”,与
Foo*a=newfoo的内存类型相同,但另一部分[
new
使用堆内存,堆栈与堆不同,而是相同类型的内存]


当然,如果类
Foo
包含一个构造函数,它本身就可以调用
new
和所有其他可能改变或不改变内存使用情况的函数…

从技术上讲,如果
a
适合寄存器,它可能最终使用“无内存”。否则,它将被分配到堆栈上,我称之为“主内存”,与
Foo*a=newfoo的内存类型相同,但另一部分[
new
使用堆内存,堆栈与堆不同,而是相同类型的内存]

当然,如果类
Foo
包含一个构造函数,它本身就可以调用
new
和所有其他可能改变或不改变内存使用情况的函数…

你说的“主内存”是什么意思。我知道的C++实现总是使用RAM,除非你使用一些具有非均匀RAM或GPGPU的微控制器,也许。代码>一个
对象将位于堆栈上。您所说的“主内存”是什么意思。我知道的C++实现总是使用RAM,除非你使用一些MI。