首先说明一下,这个问题我不会。下面是一些分析。
数组是静态分配的空间,应该是在栈上,数组你想分配100万个元素的话,如果是char数组,占用的空间就是1M,如果这个值超过了允许的栈空间大小,肯定会出错的。
栈空间视不同的机器不同,至于具体是在编译环境中设置还是在操作系统中设置,我就不知道了。
另外,最好不要用这么大的数组,遍历、修改操作都不方便,性能太低。
下面是一个人的试验:
我用程序测试了一下,大概为10M,这是为什么呢
#include
int main(int argc,char *argv[])
{
char a[10475760]; //略小于10M,运行通过
printf("%p\n", a);
return 0;
}
#include
int main(int argc,char *argv[])
{
char a[10485760]; //恰好为10M,出现段错误
printf("%p\n", a);
return 0;
}
#include