C# 填写列表时OutOfMemoryException<;字节>;在C中#
我遇到内存不足异常,我不知道为什么? 这是我的C代码:C# 填写列表时OutOfMemoryException<;字节>;在C中#,c#,C#,我遇到内存不足异常,我不知道为什么? 这是我的C代码: List testlist=newlist(); 对于(byte i=0;i您的循环永远不会终止,因为byte是一个无符号的8位整数,有效值介于0和255之间 因此,当i==255并且循环体完成时,会出现另一个增量。但是,由于字节的范围,这不会导致i等于256(不能!),这反过来会导致循环终止。相反,它会溢出,并滚动到0。因此,循环继续进行这是使用无符号循环计数器时比较常见的错误 与此同时,你的列表一直在增长,直到你运行OOM。没有理由在这
List testlist=newlist();
对于(byte i=0;i您的循环永远不会终止,因为byte
是一个无符号的8位整数,有效值介于0和255之间
因此,当i==255
并且循环体完成时,会出现另一个增量。但是,由于字节的范围,这不会导致i
等于256
(不能!),这反过来会导致循环终止。相反,它会溢出,并滚动到0
。因此,循环继续进行这是使用无符号循环计数器时比较常见的错误
与此同时,你的列表一直在增长,直到你运行OOM。没有理由在这里使用字节;在将它添加到列表时,只需使用int
和casti
。这是一个32位的过程吗?你的内存消耗是什么样的?你也许应该学会避免在c
中使用循环(OP)可以用来检查这个;)这样就可以了:List testlist=new List();for(int i=0;i@CarstenKönig啊,我不知道checked
。不过我不想在任何地方都显式地使用它;@MickyDuncan当然也有;)@CarstenKönig Sweet!谢谢老兄:D
List<byte> testlist = new List<byte>();
for (byte i = 0; i <= 255; i++)
{
testlist.Add(i); //exception thrown here in the last cycle
}