为什么使用 int 分配数组.MaxValue 失败,并且分配两个大小为 int 的数组.最大值 / 2 则不然

本文关键字:数组 分配 int 小为 两个 最大值 失败 MaxValue 为什么 | 更新日期: 2023-09-27 18:36:04

为什么分配大小为 int.MaxValue 的字节数组失败

    byte[] array1 = new byte[int.MaxValue]; // throws an OutOfMemoryException 

而分配两个大小为 int.MaxValue / 2 的数组没有吗?

    byte[] array2 = new byte[int.MaxValue / 2];
    byte[] array3 = new byte[int.MaxValue / 2];

为什么使用 int 分配数组.MaxValue 失败,并且分配两个大小为 int 的数组.最大值 / 2 则不然

.NET 中对象的最大大小为 2GB:http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450202.aspx

国际。最大值 + 数组开销略大于 2 GB。

在最新版本的 .NET 中(至少 4.5 及以上),您可以分配大于 2Gb 的对象 - 但是您必须设置 gcAllowVeryLargeObjects - https://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx

我不知道

int的值。C#中的MaxValue,但我认为.Net不允许大于2GB的对象