为什么使用 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];
.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的对象