当我初始化 1,000,000 个整数的数组时,程序崩溃了,但是当我把关键字 static 放在前面时,一切正常,为什么?
int a[1000000] <- crash
static int a[1000000] <- runs correctly
原因是第一个是在栈上分配的,没有足够的栈空间来容纳它。
第二个位于数据段中。
由于您已标记问题[c++]
,我建议您使用std::vector
而不是数组。
当一个变量是非静态的时,它是在堆栈上分配的。使用 ~4 MB 数组,您可能会遇到堆栈溢出
第一个分配在堆栈上,您可能已经溢出堆栈。第二个分配在全局/静态内存中,在程序启动时分配。
您也可以使用 malloc/free 或 new/delete,这样它将在堆上,但是。您需要确保它成功。