是存储在堆栈上的对象
Are objects stored on the stack?
由于对象是通过隐藏函数构建的,而不是基元类型,因此在C++中,它对性能的范围变量非常有意义,而在C99中则不然。
我的问题是:对象是否存储在堆栈上?
在标准C++中,没有堆栈这样的东西。该标准只区分对象的不同寿命。在这种情况下,声明为T t;
的变量被称为具有自动存储持续时间,这意味着它的生命周期随着其周围范围的结束而结束。大多数(所有?)编译器都是通过堆栈实现的。合理的假设是,以这种方式创建的所有对象实际上都存在于堆栈中。
自动分配的[local]对象位于自动内存区域["stack"],而动态分配的对象位于动态内存区域["heap"]。
根据经验:在C++中,所有不使用new
或malloc
的内容都会自动分配。
EDIT:请注意,我使用带双引号的"stack"answers"heap",因为标准[AFAIK]没有指定如何在这些区域管理数据,但编译器确实倾向于将stack用于自动区域,将heap用于动态区域。
不知道你第一句话的意思,但:是的,局部变量中的对象通常存储在堆栈中。
相关文章:
- C++ 在堆栈中包含多态属性的类对象存储
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- C++ 对象数组堆栈溢出
- 作为指针注入类后重新创建堆栈对象不好吗?
- C++包装库:在堆栈上分配C++ C 中的对象
- 对象接收堆栈溢出异常 c++ 的排序向量
- C++析构函数调用两次,堆栈分配的复合对象
- 如何在构建对象堆栈时解决转换错误?
- 堆分配对象中的堆栈对象在 c++ 中在哪里分配?
- C++ - 面试问题中的堆栈上的对象
- 堆还是堆栈用于创建对象?
- C++自己的对象堆栈.在 push() 上复制了什么?
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 对象向量是否在堆或堆栈上分配C++?
- 使用在堆栈上创建的对象调用虚拟函数
- 如果我使用malloc()而不是堆栈数组,OpenGL不会渲染对象
- 如何以编程方式区分在内存的堆和堆栈部分创建的对象
- 模板堆栈对象的数组;语法
- 小对象堆栈存储,严格混叠规则和未定义行为