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 ++编程中使用的二维数组的最大大小是多少? [重复]

现代浏览器中当前的 cookie 限制是多少?

学习堆栈大小限制

SwiftUI 中 ScrollView 的图像大小限制是多少?

文件名大小限制是多少[重复]

MySQL 中查询/查看表的大小限制是多少?