【发布时间】:2011-07-06 20:02:51
【问题描述】:
在 C++ 中自动变量分配在哪里?在栈上还是堆上?
另外,我在 7.9 — The stack and the heap 中读到,堆栈上分配的 所有 内存在编译时是已知的。这是真的吗?这是否意味着堆栈上只发生静态内存分配?
另外,请提及链接,参考关于 C++ 内存分配的完整解释性文本。
【问题讨论】:
-
C++ 变量分配的详细解释见this question。
-
C++ 是一种语言,而不是一种实现,因此它没有“堆栈”之类的概念;这些东西留给编译器和特定平台。可能会在堆上分配每个具有自动存储持续时间的对象。但实际上,它始终是堆栈。但请记住,如果您真的需要了解这些信息,您将询问平台,而不是 C++。让 C++ 成为 C++ 语言,别担心。另外,不要从网上学习 C++,你应该得到一个good book。
-
@GMan:实际上,自动变量并不总是在堆栈中。看我的回答。
-
@Peter:是的,也许总是有点强,但大多数时候肯定是这样。寄存器是一种非常稀缺的资源。
标签: c++ memory heap-memory stack-memory automatic-properties