簡體   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