1

当我初始化 1,000,000 个整数的数组时,程序崩溃了,但是当我把关键字 static 放在前面时,一切正常,为什么?

int a[1000000] <- crash
static int a[1000000] <- runs correctly
4

3 回答 3

3

原因是第一个是在栈上分配的,没有足够的栈空间来容纳它。

第二个位于数据段中。

由于您已标记问题[c++],我建议您使用std::vector而不是数组。

于 2013-08-31T19:08:11.300 回答
0

当一个变量是非静态的时,它是在堆栈上分配的。使用 ~4 MB 数组,您可能会遇到堆栈溢出

于 2013-08-31T19:08:29.603 回答
0

第一个分配在堆栈上,您可能已经溢出堆栈。第二个分配在全局/静态内存中,在程序启动时分配。

您也可以使用 malloc/free 或 new/delete,这样它将在堆上,但是。您需要确保它成功。

于 2013-08-31T19:08:55.340 回答