这是我的简单数组声明
INT64 arr[200000];
在VC ++中引发错误,但在C#中运行RUN ..
你能帮忙吗?
由于 阿伦
答案 0 :(得分:3)
尝试在堆上分配数组(使用new或malloc),而不是在堆栈上。
或者:您可以使用项目属性来增加线程的堆栈大小以容纳该数组(它的大小为200000 * sizeof(INT64))
答案 1 :(得分:2)
在C#中你可能有这段代码:
Int64[] arr = new Int64[200000];
这不会在堆栈上分配数组本身,只分配数组引用。由于数组是.NET中的引用类型,因此数组本身位于堆上,堆的可用空间比堆栈大得多。
在C中,以下代码:
INT64 arr[200000];
实际上会尝试在堆栈上分配数组,通常这会失败,因为大多数系统都没有创建足够大的堆栈来容纳那么多数据。
您有多个选项,但最好的选择可能是使用new[]
运算符在堆上分配它。