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