二维数组中元素的最大数量是多少?

4

我需要创建一个二维数组,但是c#不允许我创建,提示数组太大,有什么办法可以解决?

int[,] arrayName = new int[37153,18366];

4
这个数组需要2.6GB的内存(37153 x 18366 x 4字节)。 - Sir Rufo
为什么你需要这样一个很大的内存数组?难道你不能使用数据库,只将有用的数据放到内存中吗? - Shaharyar
如果您正在运行64位计算机并使用.NET 4.5或更高版本,则可以尝试按照此处所述设置<gcAllowVeryLargeObjects> - dbc
2个回答

3

一个int数组的最大理论大小是2147483647,即int[] array = new int[2147483647]。但你在这里遇到的问题是计算机内存不足。

阅读以下内容了解说明和解决此问题的提示: 声明大型数组时出现OutOfMemoryException


1
如果您没有使用数组的完整范围(在您的情况下是2.7GB的RAM),您可以使用一个字典

https://msdn.microsoft.com/de-de/library/xfhwa508(v=vs.110).aspx

替代方案:创建一个[][]数组。在这种情况下,您必须初始化每一行。但是您可以轻松访问每个单元格,使用arrayName[row][col]

    int[][] arrayName = new int[37153][];
    for(int i=0; i<arrayName.Length; i++)
        arrayName[i] = new int[18366];

不幸的是,我确实需要使用数组的整个范围。 - Michal Rickwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接