请问 macos 13.3 怎么开大栈空间?

我想给终端分配更大的栈空间以编译c++程序,使用 ulimit -s 命令,但是它提示我不能超过 hard limit(65520kb),我也没有找到如何有效的修改 hard limit 的方式,请问这应该如何做到?(我目前找到一种替代的解决方式是在编译命令中添加 -Wl,-stack_size -Wl,0x10000000)

以及如何给终端分配更多的虚拟内存?我在代码中开了 1e6 个 vector<pair<int,int>> 使用 g++ 编译会报错。但使用 clang++ 不会。

阅读 2.6k
1 个回答

如果你的 ulimit hard limit 已经是系统限制了,而仍需要更大的栈空间,可以使用 ulimit 命令修改 soft limit,之后再使用 ulimit -s 来增加栈空间大小。soft limit 的值不能超过 hard limit 的值,仍可以提升软限制。具体命令为:ulimit -S -s 32768
这将把栈的软限制增加到 32768 kb,然后就可以使用 ulimit -s 增加栈大小了。至于如何给终端分配更多的虚拟内存,需要修改操作系统的虚拟内存大小限制。不过,这是一个底层系统设置,建议不要轻易修改,而是需要对系统有足够的了解。如果程序使用的内存太多而无法在默认内存配置下工作,可以考虑更改代码中的内存使用方式,例如使用队列等数据结构代替 vector,或者使用内存映射文件等技术优化内存使用。至于为什么使用 g++ 会报错,而使用 clang++ 不会,这可能与两个编译器的默认编译选项和内存分配方式有关。建议您查看各个编译器的文档,或者详细分析编译时的错误信息,以更好地理解这个问题。

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