内存溢出

时间:2016-04-13 14:47:00

标签: c# memory

  List<int> pal=new List<int>();
        List<int> nums = new List<int>();
        var thdigit1 = 1;
        var thdigit2 = 999;
        while (thdigit2>=1)
        {
            var holder=thdigit1* thdigit2;
            nums.Add(holder);
            thdigit2 -= 1;
            if (thdigit2==0)
            {
                thdigit2 = 999;
                thdigit1 += 1;
            }
        }

我在列表中得到了太多的内存过载问题。我的计算机可以处理一定的限制吗?谢谢

1 个答案:

答案 0 :(得分:2)

问题是当thdigit21时,它仍在继续while循环,

while (thdigit2>=1)

减少1,然后变为0

thdigit2 -= 1;

并...重新发送回999

if (thdigit2==0)
{
    thdigit2 = 999;
    thdigit1 += 1;
}

因此,您永远不会离开while循环,从而导致内存溢出。

要修复它,您可能需要在while循环中添加另一个终止条件:

while(thdigit2 >= 1 && thdigit1 <= 10) //example