gpt4 book ai didi

.net - 64 位 Windows 上 .NET 中数组的最大长度是多少

转载 作者:行者123 更新时间:2023-12-03 11:09:06 25 4
gpt4 key购买 nike

我听说 .NET 中的最大数组大小是 4 GB?只是想知道这是不是真的。您不会梦想在 32 位 .NET 上执行此操作,而是在具有 12 GB RAM 的 64 位系统上执行此操作,也许只是您可能想要执行此操作。 :-)

最佳答案

一个数组理论上最多可以有 2,147,483,647 个元素,因为它使用 int 进行索引。实际限制略低于此值,具体取决于数组中包含的类型。
但是,在 .NET CLR 中有 2GB 的最大单个对象限制,即使是 64 位也是如此。这是 done by design .
您可以轻松制作 IList<T>在内部保留多个数组并允许您增长超过 2GB 单个对象限制的实现,但框架本身没有一个。
然而,这通常不是一个真正的问题。大多数时候,你会有指向大类的数组——所以数组只是保存引用。这意味着您的阵列可以有效地指向很多很多 GB 的内存 - 但阵列本身不能大于 2GB。

请注意,从 .NET 4.5 开始,64 位应用程序可以选择加入一个新选项:gcAllowVeryLargeObjects .使用此新选项集,可以获得 UInt32.MaxValue (4,294,967,295) 个多维数组中的元素,尽管一维数组仍然限制为 2,146,435,071 个元素(2,147,483,591 用于单字节数组或不包含任何字节的结构数组)。
此选项的新规则是:

  • 数组中元素的最大数量为 UInt32.MaxValue。
  • 对于字节数组和单字节结构数组,任何单个维度中的最大索引为 2,147,483,591 (0x7FFFFFC7),其他类型的最大索引为 2,146,435,071 (0X7FEFFFFF)。
  • 字符串和其他非数组对象的最大大小不变。
  • 关于.net - 64 位 Windows 上 .NET 中数组的最大长度是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338778/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com