c# System.OverflowException

本文关键字:OverflowException System | 更新日期: 2023-09-27 18:28:39

所以这是我的代码:

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];
}

当我为"num"输入10000000000时,我得到

"System.OverflowException算术运算导致溢流"

我该怎么修?

c# System.OverflowException

您的代码溢出,因为C#中数组的最大大小是Int32.MaxValue,等于2147483647。你可以在源代码中看到这方面的提示,文档中也有明确的说明:

默认情况下,阵列的最大大小为2 GB。在64位环境中,您可以通过设置在运行时将配置元素(.NET 4.5中引入的<gcAllowVeryLargeObjects>)的enabled属性设置为true环境然而,该阵列仍将被限制为总共4个十亿个元素,并且在任何给定中的最大索引为0X7FEFFFFF(2146435071)字节数组和单字节数组的维度(0X7FFFFFC7(2147483591)结构)。

好吧,您正试图分配大量内存,因为调用长数组构造函数实际上已经释放了您请求的内存。long是64位,因此是8个字节。8字节*10000000000=80 GB内存。太过分了。

假设您有足够的内存,C#中数组的最大长度为int.MaxValue,即2147483647(使用long时为16GB)。

相关文章:
  • 没有找到相关文章