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 を超える新しい Array を定義するとうまくいきます。
私が考えているアイデアは、サイズが 100 の 4 つの新しい配列を初期化することです。そして、以下のように異なる初期カウンターで始まる 4 つの新しい配列を使用します。
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
}
}
}
私の上記の考えはそれを行う正しい方法ですか?または、配列の使用を拡張する他のオプションはありますか?