为什么g ++在函数本地声明时显示大数组声明时的分段错误,而在全局声明时它工作正常?

时间:2014-05-20 12:54:25

标签: c++

我想声明4个大小为1000 * 1000的2-D数组(考虑到int,为4 * 10 ^ 6 * 4个字节)。最初,当我在main()函数中声明这些数组时,我遇到了分段错误。

后来我全局声明了数组,程序运行正常。为什么会这样?

1 个答案:

答案 0 :(得分:5)

当在函数内声明大数组时,它们存储在堆栈框架上,其大小不多(不知道确切的值)。

当数组全局声明时,它存储在数据(如果变量已初始化)和 bss (如果未初始化)中。 Data和bss的大小非常高(不知道确切的值),这就是为什么它们可以容纳大型数组声明。