VC ++ Int64 arr [200000] - 堆栈溢出错误

时间:2009-10-29 16:41:53

标签: visual-c++

这是我的简单数组声明

INT64 arr[200000];

在VC ++中引发错误,但在C#中运行RUN ..

你能帮忙吗?

由于 阿伦

2 个答案:

答案 0 :(得分:3)

尝试在堆上分配数组(使用new或malloc),而不是在堆栈上。

或者:您可以使用项目属性来增加线程的堆栈大小以容纳该数组(它的大小为200000 * sizeof(INT64))

答案 1 :(得分:2)

在C#中你可能有这段代码:

Int64[] arr = new Int64[200000];

这不会在堆栈上分配数组本身,只分配数组引用。由于数组是.NET中的引用类型,因此数组本身位于堆上,堆的可用空间比堆栈大得多。

在C中,以下代码:

INT64 arr[200000];

实际上会尝试在堆栈上分配数组,通常这会失败,因为大多数系统都没有创建足够大的堆栈来容纳那么多数据。

您有多个选项,但最好的选择可能是使用new[]运算符在堆上分配它。