Possible Duplicate:
Checking available stack size in C
EDIT2:我的问题是 Checking available stack size in C 的重复请删除。
编辑:我正在寻找有关大小限制的信息,而不是有关变量使用的一般信息。
可以确定大小限制吗?是否依赖于系统?
例如课本上经常写char string[1024];
但是如果一个人高兴地写 char string[99999999] 他可能会崩溃。
最佳答案
这将取决于很多因素(我是从 UNIX 机器的角度编写的)
- 堆栈段的 ulimit。堆栈段的 ulimit 将决定可以为进程分配多少堆栈空间。
- 进程的位数。即使堆栈的 ulimit 是无限的,也有一个最大限制。 32 位有不同的最大堆栈大小,64 位有不同的最大大小。取决于操作系统架构和运行环境。
- 机器中的可用内存。有一些分页算法,在分配实际内存时保留分页设备中的空间。如果没有空间,该过程甚至不会启动。
- 巨大的自动变量大小可能会导致堆栈和堆冲突。
可能还有更多......但完全取决于操作系统架构和运行时环境
关于c - C 中自动变量的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4508289/