繁体   English   中英

填充List时出现OutOfMemoryException <byte> 在C#中

[英]OutOfMemoryException when filling List<byte> in C#

我得到了一个内存不足的例外,我不知道为什么? 这是我的C#代码:

List<byte> testlist = new List<byte>();
            for (byte i = 0; i <= 255; i++)
            {
                testlist.Add(i); //exception thrown here in the last cycle
            }

您的循环永远不会终止,因为byte是无符号的8位整数,有效值介于0到255之间。

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

与此同时,您的列表正在增长,直到您运行OOM。 这里没有理由使用byte ; 只需使用int和投i将它添加到列表时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM