当变量的定义(比如int a[100])出现在在函数以内时(如main()),这个情况下变量a是从栈空间来申请内存进行储存,而栈空间是在进程创建时初始化的,大小由系统固定的。所以定义占用较大内存的变量(如大数组)时,编译可以通过但是运行不了。
如下图所示:(编译不会报错,但是运行)
而当我们把变量的定义放在函数体以外时,所申请的内存来自于数据段,内存大小按需分配,可以自由增长,所以可以特别大。如下图所示:
当变量的定义(比如int a[100])出现在在函数以内时(如main()),这个情况下变量a是从栈空间来申请内存进行储存,而栈空间是在进程创建时初始化的,大小由系统固定的。所以定义占用较大内存的变量(如大数组)时,编译可以通过但是运行不了。
如下图所示:(编译不会报错,但是运行)
而当我们把变量的定义放在函数体以外时,所申请的内存来自于数据段,内存大小按需分配,可以自由增长,所以可以特别大。如下图所示: