有什么方法可以增加堆栈 size/recursion 限制吗?

Is there any way to increase the stack size/recursion limit?

我正在编写一个 C 程序,并且由于分段错误而超出了递归限制。有没有办法通过 GCC 选项或命令行选项来增加程序的递归限制(可能通过增加堆栈大小)?该程序在 Ubuntu 上 运行。

您可以在 Linux 上使用 ulimit 更改堆栈大小,例如:

ulimit -s unlimited

在 Windows 和 Visual Studio 上,使用 /F option

堆栈大小是操作系统的函数,尽管许多早期的操作系统(例如 MSDOS)没有进行程序堆栈段控制:由程序保留足够大小的段。

对于虚拟内存和 32 位 API,堆栈大小通常由资源管理机制提供。例如,在 Linux 上,ulimit 命令提供了一种堆栈大小控制来源。其他级别的控制由内核中的机制提供,执行系统策略、内存限制和其他限制。