我有一个程序必须在 C 中声明一个大小为 1000000 的巨大整数数组(使用 GNU GCC 编译器)。我尝试用两种不同的方式声明数组。
两个可能的代码是:
#include <stdio.h>
int arr[1000000];
int main()
{
return 0;
}
and
#include <stdio.h>
int main()
{
int arr[1000000];
return 0;
}
后一个版本在运行时挂起。可能的原因是什么?
多谢!!!
第二个版本在堆栈上分配,对于任何给定进程,堆栈的大小可能会受到系统上的限制。第一个在进程的数据段中分配,其大小不受限制(至少对于这些数量级的分配大小)
From 这个答案您可以了解如何检查 Linux 和 Windows 等各种平台的堆栈分配限制。如果您使用的是 Linux,则很简单:
ulimit -a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)