内存异常?

时间:2014-09-19 12:56:22

标签: c# multidimensional-array

我编写了这段代码,但如果我传递的是范围值46542,则会在行中出现内存异常。

long[,] array = new long[range, range];

如何解决这个问题?

int noOfTestCases = Convert.ToInt32(Console.ReadLine());
if(noOfTestCases>=1 && noOfTestCases<=100)
{
    for(int i=0; i<noOfTestCases; i++)
    {
        Console.WriteLine("Enter the Range");
        long range = Convert.ToInt64(Console.ReadLine());
        long[,] array = new long[range, range];
    }
}

2 个答案:

答案 0 :(得分:3)

  

如何解决这个问题?

选择小于46,341的范围。数组中元素的最大数量为Int32.MaxValue或2,147,483,647。

由于您正在创建NxN阵列,因此“square”的一侧最大尺寸为Math.Sqrt(Int32.MaxValue)46340.950001052

答案 1 :(得分:2)

数组中作为索引器的最大大小为System.Int32.MaxValue,小于某些Int64个数字。因此,你得到了这个例外。