堆栈溢出是其实现的一部分,还是仅受操作系统的内存/ RAM约束所限制?

时间:2018-10-25 04:18:06

标签: memory-management data-structures stack language-agnostic stack-overflow

当您听到堆栈溢出时,是否表示该堆栈最初具有1mb的容量,然后添加了更多项目...增加了它的大小,因此将堆栈的大小调整为2mb ...然后继续直到调整为10mb ...但是由于堆栈具有最大容量,它永远无法调整为11mb?

还是在堆栈级别没有这种限制,而是来自应用程序/程序。而且该限制可能会基于多种原因而波动。例如如果您的iPhone的内存不足,则仅允许10mb的堆栈,但是如果它具有1Gb的可用内存,则该应用程序将能够使用所有这些空间,因此最大堆栈容量将接近1Gb?

我的问题不同于链接的问题。这与应用程序的调用栈无关。而是纯粹是由谁来取消溢出的堆栈?并证明它是堆栈实现的一部分还是什么?

1 个答案:

答案 0 :(得分:0)

基于安迪(Andy)提供的评论,

只要有限制,就可以从那里引发错误。 堆栈没有限制或引发错误的特定约定。虽然可以做到。

操作系统还可以施加不同的限制:

  • 虚拟机上的限制
  • 针对单个应用程序的操作系统限制