В C # у вас, вероятно, есть этот код:
Int64[] arr = new Int64[200000];
Это не размещает сам массив в стеке, только ссылка на массив. Поскольку массивы являются ссылочными типами в .NET, сам массив живет в куче, в которой доступно больше места, чем в стеке.
В C, следующий код:
INT64 arr[200000];
на самом деле попытается выделить массив в стеке, и обычно это не удастся, так как большинство систем не создают стек, достаточно большой для хранения такого количества данных.
У вас есть несколько вариантов, но лучше всего разместить их в куче, используя вместо этого оператор new[]
.