C++ 标准没有提及堆栈或堆的任何内容,它们是特定于实现的,这是真的。
尽管它们不是 C++ 标准的一部分,但我们最终还是会使用它们,以至于它们就像是语言本身的一部分,并且必须考虑到内存或性能目的。
因此我的问题是否有不使用堆栈和堆的 C++ 实现?
最佳答案
其他人已经对堆给出了很好的答案,所以我就不说了。
某些实现(例如,在 IBM 大型机上)并不像大多数人想象的那样使用堆栈,原因很简单,硬件不支持它。相反,当您调用函数时,会从堆(它们的版本)分配激活记录(即,本地、参数和返回地址的空间)。这些激活记录被构建到一个链表中。
从纯粹抽象的角度来看,这肯定是一个堆栈——它支持后进先出语义,就像任何其他堆栈一样。不过,您确实必须非常抽象地看待它才能将其称为堆栈。如果您向人们展示链接在一起的内存块的图表,我认为可以肯定地猜测大多数程序员会将其描述为链表。如果你推送它们,我想大多数人会这样判断它“是的,你可以以类似堆栈的方式使用它,但它仍然是一个链表。”
关于c++ - 是否有 C++ 的无堆栈或无堆实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900885/