对于我在C#中的编程练习,我试图创建长度为 的数组,长度为0x1fffffff(base10中的536,870,911),但是我得到了System.OutOfMEmoryException。大阵列C#OutOfMemoryException
对于构建,我定位了x64系统,并且我在Windows7 x64上运行了带有8GB内存的VisualStudio2008。 它应该是足够的内存阵列(它在JDK x64和CPP项目上工作)
有什么想法?
const long MAX = 0x1fffffff; // 536870911 in base10
program.arr = new long[MAX];
for (long i = 0; i < MAX; i++)
{
program.arr[i] = i;
}
仅供参考,它被称为“C#”,而不是“CSharp”。 – 2011-04-26 14:34:39
你不能制作一个很大的物体。但即使你能做到,你似乎也会因为RAM决定你可以分配多少内存的错误理解而受苦。它没有,也没有几十年。内存容量限制了*快*你将能够访问该内存。拥有大内存是性能优化;内存分配实际上最好是从页面文件中分配出来的。记住,当你分配内存时,你正在分配*虚拟内存*,而不是*硬件内存*。 – 2011-04-26 15:42:48