这是我的密码:
static void Main(string[] args)
{
Console.WriteLine("How many numbers are you going to enter?");
long num = long.Parse(Console.ReadLine());
long[] nums = new long[num];
}当我输入10000000000表示"num“时,我得到
"System.OverflowException算术操作导致溢出。“
我该怎么做才能修好它?
发布于 2015-12-31 15:34:27
好的,您正在尝试分配大量内存,因为调用long数组构造函数实际上已经释放了所请求的内存。long是64位,所以是8字节。8个字节* 10000000000 = 80 GB内存。太贵了。
C#中数组的最大长度是int.MaxValue,假设您有足够的内存,它是2,147,483,647 (使用long的16 in )。
发布于 2015-12-31 15:33:30
您的代码溢出,因为C#中数组的最大大小是Int32.MaxValue,它等于2147483647。您可以在源代码中看到这方面的提示,并且在文档中有明确的说明。
默认情况下,Array的最大大小是2G (GB)。在64位环境中,可以通过在运行时环境中将configuration元素(
<gcAllowVeryLargeObjects>在.NET 4.5中引入)的启用属性设置为true来避免大小限制。但是,数组仍将被限制为总共40亿个元素,并且在任意给定维度中的最大索引为0X7FEFFFFF (2146435071) (对于字节数组和单字节结构数组,为0X7FFFFFFC 7 (2147483591) )。
https://stackoverflow.com/questions/34548429
复制相似问题