首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OutOfMemoryException在C#中填充List<byte>时

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

Stack Overflow用户
提问于 2015-03-29 08:25:47
回答 1查看 162关注 0票数 4

我的记忆异常我不知道为什么?这是我的C#代码:

代码语言:javascript
复制
List<byte> testlist = new List<byte>();
            for (byte i = 0; i <= 255; i++)
            {
                testlist.Add(i); //exception thrown here in the last cycle
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-29 08:27:55

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

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

同时,在运行OOM之前,您的列表还在增长。这里没有理由使用byte;添加到列表中时只需使用int和cast i即可。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29327087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档