[英]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.