首页 > 解决方案 > 溢出堆栈是其实现的一部分,还是只是受操作系统的内存/RAM约束限制的东西?

问题描述

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

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

我的问题与链接的问题不同。这与应用程序的调用堆栈无关。相反,它纯粹是关于谁将取下溢出的堆栈?并表明这是堆栈实现的一部分还是什么?

标签: memory-managementdata-structuresstacklanguage-agnosticstack-overflow

解决方案


根据安迪提供的评论,

无论您在哪里有限制,都可以从那里抛出错误。堆栈没有限制或抛出错误的特定约定。虽然它可以做到这一点。

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

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

推荐阅读