c - C 中自动变量的大小限制是多少?

标签 c memory variables

Possible Duplicate:
Checking available stack size in C

EDIT2:我的问题是 Checking available stack size in C 的重复请删除。

编辑:我正在寻找有关大小限制的信息,而不是有关变量使用的一般信息。

可以确定大小限制吗?是否依赖于系统?

例如课本上经常写char string[1024];

但是如果一个人高兴地写 char string[99999999] 他可能会崩溃。

最佳答案

这将取决于很多因素(我是从 UNIX 机器的角度编写的)

  1. 堆栈段的 ulimit。堆栈段的 ulimit 将决定可以为进程分配多少堆栈空间。
  2. 进程的位数。即使堆栈的 ulimit 是无限的,也有一个最大限制。 32 位有不同的最大堆栈大小,64 位有不同的最大大小。取决于操作系统架构和运行环境。
  3. 机器中的可用内存。有一些分页算法,在分配实际内存时保留分页设备中的空间。如果没有空间,该过程甚至不会启动。
  4. 巨大的自动变量大小可能会导致堆栈和堆冲突。

可能还有更多......但完全取决于操作系统架构和运行时环境

关于c - C 中自动变量的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4508289/

相关文章:

javascript - 无法通过字符串形式的名称访问对象

c - 修改抓包包头

我可以以某种方式拥有静态 C 宏吗?

c - sendmessage()[WINDOWS] 在 MAC OS X 中的等效用法是什么?

python - 尝试将 R 对象文件加载到 python numpy 数组中时出现内存错误

c++ - 数组声明和内存布局

c - `memcpy` 不复制所有字节

c - C 中的密码强度检测器不起作用

arrays - 错误的替换 shell-尝试使用变量作为数组的名称

php - 查询中的 Where 子句变量被忽略