堆和堆栈在C++中意味着什么?

use*_*929 -1 c++ language-lawyer

我听到这些词语被抛出很多,但我不明白它们在含义.有人告诉我在标准中查找它,但在索引中没有提到"堆栈"或"堆",只有堆栈展开没有说明堆栈是什么.

这些概念是否存在于C++中?

πάν*_*ῥεῖ 5

我听到这些话被扔了很多......

是的,这些被广泛使用来自误解和坚持不恰当的术语,将硬件和操作系统概念与编程语言实现相结合.

这些概念是否存在于C++中?

只要你将"堆"称为动态存储持续时间,并将"堆栈"称为自动存储持续时间,c ++标准就没有这些特定术语的概念,而是使用其他术语.所以不行.

请注意,局部变量,全局变量或参数的自动存储持续时间没有区别.

如何实际完成被视为实现细节,实际上取决于目标CPU架构和OS环境.


完成答案(这就是为什么我说"只要你指的是..."):

c ++标准库实际上为a std::stack提供了概念.
但这些是指数据结构,与实现任何类型实例的内存分配无关.

  • 甚至有一些实现在没有堆栈/堆的情况下实现这些概念,请参阅:[是否存在无堆栈或无堆的C++实现?](http://stackoverflow.com/q/10900885/1942027)(可能在某种程度上依赖于虽然堆栈/堆的定义. (2认同)