C中自动变量的大小限制是多少? [复制]
Posted
技术标签:
【中文标题】C中自动变量的大小限制是多少? [复制]【英文标题】:What is the size limit for automatic variables in C? [duplicate] 【发布时间】:2011-05-29 08:11:22 【问题描述】:可能重复:Checking available stack size in C
EDIT2:我的问题是 Checking available stack size in C 重复,请删除。
编辑:我正在寻找有关大小限制的信息,而不是有关变量使用的一般信息。
可以确定大小限制吗?它依赖于系统吗?
例如教科书常写char string[1024];
但是如果一个人愉快地写 char string[99999999] 他可能会崩溃。
【问题讨论】:
【参考方案1】:这将取决于很多因素(我是从 unix 机器的角度编写的)
-
堆栈段的ulimit。堆栈段的 ulimit 将决定可以为进程分配多少堆栈空间。
进程的位数。即使堆栈的 ulimit 是无限的,也有一个最大限制。 32 位具有不同的最大堆栈大小,64 位具有不同的最大堆栈大小。取决于操作系统架构和运行时环境。
机器中的可用内存。有分页算法,其中在分配实际内存时保留分页设备中的空间。如果没有空间,进程甚至不会启动。
巨大的自动变量大小会导致堆栈和堆冲突。
可能还有更多……但完全取决于操作系统架构和运行时环境
【讨论】:
【参考方案2】:由于自动变量位于堆栈上,这取决于堆栈大小的配置方式以及您有多少嵌套调用。要分配 MB,您应该考虑使用堆 (malloc)
【讨论】:
【参考方案3】:变量的基本类型,请访问:C Variables
其他使用动态变量,如链接列表或根据要求。
编辑:在这种情况下,只需使用@stracker 大小取决于您运行此应用程序时的可用内存。
【讨论】:
【参考方案4】:我不知道这是否对你有帮助。 您可以尝试查看limits.h(或通过此link)。 你可能会从中得到一些东西。
【讨论】:
以上是关于C中自动变量的大小限制是多少? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在c ++编程中使用的二维数组的最大大小是多少? [重复]