当我初始化1,000,000个整数的数组时,程序崩溃了,但是当我把关键字static放在前面时,一切都很完美,为什么?
int a[1000000] <- crash
static int a[1000000] <- runs correctly
答案 0 :(得分:3)
原因是第一个被分配在堆栈上,并且没有足够的堆栈空间来容纳它。
第二个生活在数据部分。
由于您已对问题[c++]
进行了标记,因此我建议您使用std::vector
代替数组。
答案 1 :(得分:0)
当变量是非静态变量时,它在堆栈上分配。使用~4 MB数组,您可能会遇到堆栈溢出
答案 2 :(得分:0)
第一个是在堆栈上分配的,你可能已经溢出了堆栈。第二个是在全局/静态内存中分配的,它在程序启动时分配。
您也可以使用malloc / free或new / delete,因此它将在堆上,但是您需要确保它成功。