相关疑难解决方法(0)

在CLR 4.0中,单个对象的大小仍然限制为2 GB?

据我所知,.NET中的单个实例有2 GB的限制.我没有太多关注,因为到目前为止我主要使用32位操作系统.在32但它或多或少是一个人为的限制.但是,我很惊讶地发现这个限制也适用于64位.NET.

由于诸如List<T>使用数组来存储项目之类的集合,这意味着与在64位上运行的相同应用程序相比,在32位上运行的.NET应用程序将能够在列表中保存两倍的引用类型项.这非常令人惊讶.

有谁知道这个限制是否在CLR 4.0中得到解决(目前我手头没有安装4.0).

.net memory clr4.0

39
推荐指数
3
解决办法
2万
查看次数

.NET阵列的最大大小

并非我需要这样做,但我想了解它是如何工作/不工作的.我用谷歌搜索了一个阵列的最大长度,并且找不到任何东西.

long[] hugeArray = new long[long.MaxValue];

//No exceptions
Console.WriteLine("Init");

//Overflow exception
Console.WriteLine(hugeArray.LongLength.ToString());

hugeArray = new long[int.MaxValue];

//OutOfMemoryException
Console.WriteLine( hugeArray.Length.ToString());
Run Code Online (Sandbox Code Playgroud)

我想一个后续问题就是,如果有一个限制并且我在该限制之外进行初始化,为什么在使用时只创建时没有例外?这是编译器应该捕获的东西吗?

.net arrays

3
推荐指数
1
解决办法
7117
查看次数

标签 统计

.net ×2

arrays ×1

clr4.0 ×1

memory ×1