有没有办法增加堆栈大小/递归限制?

时间:2015-01-23 22:14:48

标签: c linux gcc recursion stack-overflow

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

2 个答案:

答案 0 :(得分:5)

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

ulimit -s unlimited

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

答案 1 :(得分:2)

堆栈大小是操作系统的一个功能,虽然许多早期的操作系统(例如MSDOS)没有进行程序堆栈段控制:由程序来保留足够大小的段。

使用虚拟内存和32位API,堆栈大小通常由资源管理机制提供。例如,在Linux上,ulimit命令提供了一个堆栈大小控制源。其他级别的控制由内核实施系统策略,内存限制和其他限制内的机制提供。