数组中元素的最大数量与最大索引器值

今天我开始想知道MSDN中的一些东西。 本文演示如何通过.NET 4.5和x64下的数组增加可分配的内存。 这是一个很好的功能,但是Microsoft提供的描述中的某些内容对我很有帮助。

他们说,在“备注”一节中说:

对于其他类型的字节数组和单字节结构数组,在任何单维中的最大索引为2,147,483,591(0x7FFFFFC7),对于其他类型,则为2,146,435,071(0X7FEFFFFF)。

由于我主要有int[]double[]所以后一个数字与我的索引相关。 我可以用int[] TestArray = new int[2146435071]创建一个数组,这很好。 但是,微软在同一部分中指出:

数组中元素的最大数目是UInt32.MaxValue。

这是(根据MSDN):

这个常数的值是4,294,967,295; 即十六进制0xFFFFFFFF。

现在。 如果我得到了正确的结果,我可以有一个数组,最多有4,294,967,295个元素(例如ints ),但是由于数组被索引为int而不是uint我无法访问数据的“上半部分”?

这使我很困惑,似乎我错过了一些必要的东西。

我希望你能启发我

亲切的问候

编辑:

我知道我可以创建多维数组,但是长度为2e9,宽度为2的数组似乎有点愚蠢。 无论如何,多维数组是否映射到一维数组?


任何单一维度的最大指数是2,147,483,591

请记住,数组可以有多个维度,因此您可以有一个最多有4,294,967,295个项目的二维数组,但每个维度的最大长度可以是2,147,483,591。

所以你可以有2,147,483,591 X 2数组,但不是1,000,000 X 1,000,000数组。

链接地址: http://www.djcxy.com/p/77181.html

上一篇: Maximum number of elements in an array vs. maximum indexer value

下一篇: Can neo4j be run in memory only?