c++ - 是否有 C++ 的无堆栈或无堆实现?

标签 c++ standards heap-memory stack-memory stackless

C++ 标准没有提及堆栈或堆的任何内容,它们是特定于实现的,这是真的。

尽管它们不是 C++ 标准的一部分,但我们最终还是会使用它们,以至于它们就像是语言本身的一部分,并且必须考虑到内存或性能目的。

因此我的问题是否有不使用堆栈和堆的 C++ 实现?

最佳答案

其他人已经对堆给出了很好的答案,所以我就不说了。

某些实现(例如,在 IBM 大型机上)并不像大多数人想象的那样使用堆栈,原因很简单,硬件不支持它。相反,当您调用函数时,会从堆(它们的版本)分配激活记录(即,本地、参数和返回地址的空间)。这些激活记录被构建到一个链表中。

从纯粹抽象的角度来看,这肯定是一个堆栈——它支持后进先出语义,就像任何其他堆栈一样。不过,您确实必须非常抽象地看待它才能将其称为堆栈。如果您向人们展示链接在一起的内存块的图表,我认为可以肯定地猜测大多数程序员会将其描述为链表。如果你推送它们,我想大多数人会这样判断它“是的,你可以以类似堆栈的方式使用它,但它仍然是一个链表。”

关于c++ - 是否有 C++ 的无堆栈或无堆实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900885/

相关文章:

java - 我如何知道我的缓存对象使用了多少内存?

c++ - 如何更改此标记化过程以处理多行文本文件?

c++ - 是否可以从同一线程移动分配 std::thread 对象

c++ - 为什么 const_cast 需要说明你要转换到什么?

user-interface - 何时在菜单项后使用省略号

c++ - 我可以在布局兼容的标准布局类型之间合法地重新解释_cast 吗?

Java - 分配替换的字符串,或打印它

c++ - 错误“调用纯虚拟方法”,当此方法已被覆盖时

c++ - 放大影响独立 IE 的嵌入式 IE

c++ - 如何使用 glibc 的字符串实现在堆栈上分配 std::string?