是存储在堆栈上的对象

Are objects stored on the stack?

本文关键字:对象 堆栈 存储      更新时间:2023-10-16

由于对象是通过隐藏函数构建的,而不是基元类型,因此在C++中,它对性能的范围变量非常有意义,而在C99中则不然。

我的问题是:对象是否存储在堆栈

在标准C++中,没有堆栈这样的东西。该标准只区分对象的不同寿命。在这种情况下,声明为T t;的变量被称为具有自动存储持续时间,这意味着它的生命周期随着其周围范围的结束而结束。大多数(所有?)编译器都是通过堆栈实现的。合理的假设是,以这种方式创建的所有对象实际上都存在于堆栈中。

自动分配的[local]对象位于自动内存区域["stack"],而动态分配的对象位于动态内存区域["heap"]。

根据经验:在C++中,所有不使用newmalloc的内容都会自动分配。

EDIT:请注意,我使用带双引号的"stack"answers"heap",因为标准[AFAIK]没有指定如何在这些区域管理数据,但编译器确实倾向于将stack用于自动区域,将heap用于动态区域。

不知道你第一句话的意思,但:是的,局部变量中的对象通常存储在堆栈中。