linux中进程的堆栈大小是否有限制

新手上路,请多包涵

Linux中进程的堆栈大小是否有限制?它只是依赖于机器的 RAM 吗?

我想知道这一点以限制对函数的递归调用的深度。

原文由 michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 849
2 个回答

堆栈通常受资源限制。您可以使用 ulimit -a 查看安装中的默认设置:

 stack size              (kbytes, -s) 8192

(这表明我的是 8MB,这是巨大的)。

如果您删除或增加该限制,您仍然无法将机器中的所有 RAM 用于堆栈 - 堆栈从靠近进程地址空间顶部的点向下增长,并且在某些时候它将运行到您的代码、堆或加载的库中。

原文由 caf 发布,翻译遵循 CC BY-SA 2.5 许可协议

限制可以由管理员设置。

请参阅 man ulimit

可能有一个你不能跨越的默认值。如果您不得不担心堆栈限制,我会说您需要重新考虑您的设计,也许编写一个迭代版本?

原文由 Aryabhatta 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题