float[][, , ,] tempData = new float[30][, , ,];
private void InitTempData()
{
const int FocusSize = 400;
try
{
for (int i = 0; i < 30; i++)
{
tempData[i] = new float[40, FocusSize, FocusSize, 5];
}
}
catch (OutOfMemoryException ex)
{
MessageBox.Show(ex.Message);
}
}
我需要使用数组大小如下的 tempData:
tempData[30][40, 400, 400, 5]
但是到目前为止我所经历的,OutOfMemory
当我定义大小超过 100 的新数组时,它就会消失。
我想到的想法是,我初始化了四个大小为 100 的新数组。并使用四个新数组以不同的初始计数器开始,如下所示:
float[][, , ,] tempData0 = new float[30][, , ,];
float[][, , ,] tempData1 = new float[30][, , ,];
float[][, , ,] tempData2 = new float[30][, , ,];
float[][, , ,] tempData3 = new float[30][, , ,];
private void InitTempData()
{
const int FocusSize = 100;
try
{
for (int i = 0; i < 30; i++)
{
tempData0[i] = new float[40, FocusSize, FocusSize, 5];
tempData1[i] = new float[40, FocusSize, FocusSize, 5];
tempData2[i] = new float[40, FocusSize, FocusSize, 5];
tempData3[i] = new float[40, FocusSize, FocusSize, 5];
}
}
catch (OutOfMemoryException ex)
{
MessageBox.Show(ex.Message);
}
}
//Use the tempData0, tempData1, tempData2, and tempData3 with different initial counter
for (int i = 0; i < 30; i++)
{
for (int x = 0; x < FocusSize; x++)
{
for (int z = 0; z < FocusSize; z++)
{
//Use tempData0 here
}
}
}
for (int i = 0; i < 30; i++)
{
for (int x = FocusSize; x < FocusSize * 2; x++)
{
for (int z = FocusSize; z < FocusSize * 2; z++)
{
//Use tempData1 here
}
}
}
for (int i = 0; i < 30; i++)
{
for (int x = FocusSize * 2; x < FocusSize * 3; x++)
{
for (int z = FocusSize * 2; z < FocusSize * 3; z++)
{
//Use tempData2 here
}
}
}
我的上述想法是正确的做法吗?或者有没有其他选择来扩展数组的使用?