为什么大数组要开辟在main函数外?
- 定义在main函数外就是定义全局变量。在所有子程序(包括main函数)中定义的变量为局部变量。全局变量在静态存储区内分配内存,而局部变量在栈内分配内存空间。一般堆很大,比如内存1G,堆也可以大到1G。
- C语言编写的程序会在运行期间创建一个堆栈段,用来保存函数的调用关系和局部变量,而在main函数内部定义大数组相当与在栈内需要一个很大的空间,会造成栈的溢出。因此,当我们需要定义一个极大的数组时,最好在main函数外部定义。
程序一般是在内存(随机存储器:RAM)中运行:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1aa71388bfb743cc89d8ad72689c9d3a.png)
由于 main()
函数内所定义变量基本为栈区所存则数据较多,故可以使用堆区分担大压力。