C++ 标准没有提及任何有关堆栈或堆的内容,它们是特定于实现的,这是事实。
尽管它们不是 C++ 标准的一部分,但我们最终还是会使用它们,以至于它们就像是语言本身的一部分,并且必须考虑内存或性能目的。
因此我的问题是否有不使用堆栈和堆的 C++ 实现?
其他人已经给出了关于堆的很好的答案,所以我将不再讨论它。
某些实现(例如,在 IBM 大型机上)并不像大多数人想象的那样使用堆栈,原因很简单,硬件不支持它。相反,当您调用函数时,会从堆(其版本)中分配激活记录(即本地变量、参数和返回地址的空间)。这些激活记录被内置到一个链表中。
从纯粹抽象的角度来看,这当然是一个堆栈——它支持后进先出语义,就像任何其他堆栈一样。不过,你必须非常抽象地看待它才能将其称为堆栈。如果您向人们展示链接在一起的内存块的图表,我认为可以肯定地猜测大多数程序员会将其描述为链表。如果你推动他们,我想大多数人都会这样评价:“是的,你可以use它以类似堆栈的方式,但它仍然是一个链表。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)