3

为什么分配具有大小的字节数组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];
4

3 回答 3

5

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

int.MaxValue + 数组开销略大于 2 GB。

于 2012-06-03T03:08:03.820 回答
1

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

于 2016-10-29T17:15:42.860 回答
0

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

于 2012-06-03T03:11:15.723 回答