我正在尝试初始化一个三维数组以加载体素世界。
地图的总大小应该是(2048/1024/2048)。我试图初始化一个锯齿状的“int”数组,但我抛出了一个内存异常。尺寸限制是多少?我的桌子大小:2048 * 1024 * 2048 = 4'191'893'824
有人知道有办法解决这个问题吗?
// System.OutOfMemoryException here !
int[][][] matrice = CreateJaggedArray<int[][][]>(2048,1024,2048);
// if i try normal Initialization I also throws the exception
int[, ,] matrice = new int[2048,1024,2048];
static T CreateJaggedArray<T>(params int[] lengths)
{
return (T)InitializeJaggedArray(typeof(T).GetElementType(), 0, lengths);
}
static object InitializeJaggedArray(Type type, int index, int[] lengths)
{
Array array = Array.CreateInstance(type, lengths[index]);
Type elementType = type.GetElementType();
if (elementType != null)
{
for (int i = 0; i < lengths[index]; i++)
{
array.SetValue(
InitializeJaggedArray(elementType, index + 1, lengths), i);
}
}
return array;
}