为什么分配具有大小的字节数组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
失败
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
int.MaxValue + 数组开销略大于 2 GB。
在最新版本的 .NET(至少 4.5 及更高版本)中,您可以分配大于 2Gb 的对象 - 但是您必须设置 gcAllowVeryLargeObjects - https://msdn.microsoft.com/en-us/library/hh285054(v=vs.110 ).aspx
我不知道 c# 中 int.MaxValue 的值,但我认为 .Net 不允许大于 2GB 的对象