为什么分配大小为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];
答案 0 :(得分:4)
.NET中对象的最大大小为2GB:http://blogs.msdn.com/b/joshwil/archive/2005/08/10/450202.aspx
int.MaxValue +数组开销略大于2 GB。
答案 1 :(得分:0)
我不知道c#中int.MaxValue的值,但我认为.Net不允许大于2GB的对象
答案 2 :(得分:0)
在.NET的最新版本(至少4.5以上)中,您可以分配大于2Gb的对象 - 但是您必须设置gcAllowVeryLargeObjects - https://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx