数组最大可以申请多大长度
为什么在函数中定义一个数组和定义一个全局的数组可以申请的空间的大小不一样?
在函数中不能定义一个太大的数组,否则程序无法执行。
但是作为全局变量就可以。
数组是静态分配的空间,应该是在栈上,数组你想分配100万个元素的话,如果是char数组,占用的空间就是1M,如果这个值超过了允许的栈空间大小,肯定会出错的。
函数体内的数组存在于stack,函数体外的或者用static声明的数组存在于data,变量存储的内存空间不同,所以大小限制自然不同
#include<stdio.h>
#define N 100000000 //1亿
int arr[N];// 在堆上可以
int main(int argc,char**argv)
{
int b[N];//在程序栈上,要报段错误的,如果N在百万级别以下,还是可以得,也就是在栈上分配空间是有限的
static int a[N];//在堆上,可以
return 0;