Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 填写列表时OutOfMemoryException<;字节>;在C中#_C# - Fatal编程技术网

C# 填写列表时OutOfMemoryException<;字节>;在C中#

C# 填写列表时OutOfMemoryException<;字节>;在C中#,c#,C#,我遇到内存不足异常,我不知道为什么? 这是我的C代码: List testlist=newlist(); 对于(byte i=0;i您的循环永远不会终止,因为byte是一个无符号的8位整数,有效值介于0和255之间 因此,当i==255并且循环体完成时,会出现另一个增量。但是,由于字节的范围,这不会导致i等于256(不能!),这反过来会导致循环终止。相反,它会溢出,并滚动到0。因此,循环继续进行这是使用无符号循环计数器时比较常见的错误 与此同时,你的列表一直在增长,直到你运行OOM。没有理由在这

我遇到内存不足异常,我不知道为什么? 这是我的C代码:

List testlist=newlist();

对于(byte i=0;i您的循环永远不会终止,因为
byte
是一个无符号的8位整数,有效值介于0和255之间

因此,当
i==255
并且循环体完成时,会出现另一个增量。但是,由于
字节的范围,这不会导致
i
等于
256
(不能!),这反过来会导致循环终止。相反,它会溢出,并滚动到
0
。因此,循环继续进行这是使用无符号循环计数器时比较常见的错误


与此同时,你的列表一直在增长,直到你运行OOM。没有理由在这里使用
字节
;在将它添加到列表时,只需使用
int
和cast
i

这是一个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
            }