Linux中进程的堆栈大小是否有限制?它只是依赖于机器的 RAM 吗?
我想知道这一点以限制对函数的递归调用的深度。
原文由 michael 发布,翻译遵循 CC BY-SA 4.0 许可协议
Linux中进程的堆栈大小是否有限制?它只是依赖于机器的 RAM 吗?
我想知道这一点以限制对函数的递归调用的深度。
原文由 michael 发布,翻译遵循 CC BY-SA 4.0 许可协议
限制可以由管理员设置。
请参阅 man ulimit 。
可能有一个你不能跨越的默认值。如果您不得不担心堆栈限制,我会说您需要重新考虑您的设计,也许编写一个迭代版本?
原文由 Aryabhatta 发布,翻译遵循 CC BY-SA 2.5 许可协议
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
堆栈通常受资源限制。您可以使用
ulimit -a
查看安装中的默认设置:(这表明我的是 8MB,这是巨大的)。
如果您删除或增加该限制,您仍然无法将机器中的所有 RAM 用于堆栈 - 堆栈从靠近进程地址空间顶部的点向下增长,并且在某些时候它将运行到您的代码、堆或加载的库中。