.net 为什么StreamReader.ReadLine抛出OfMemoryException?
有人能告诉我为什么这里的最后一行抛出异常吗.net 为什么StreamReader.ReadLine抛出OfMemoryException?,.net,out-of-memory,.net,Out Of Memory,有人能告诉我为什么这里的最后一行抛出异常吗 byte[] buffer = new byte[1]; buffer[0] = 239; MemoryStream ms = new MemoryStream(buffer); StreamReader sr = new StreamReader(ms); string l1 = sr.ReadLine(); string l2 = sr.ReadLine
byte[] buffer = new byte[1];
buffer[0] = 239;
MemoryStream ms = new MemoryStream(buffer);
StreamReader sr = new StreamReader(ms);
string l1 = sr.ReadLine();
string l2 = sr.ReadLine();
恭喜,您在.NET framework中发现了一个bug。它由十六进制中的字节值0xef产生。这是数据的第一个字节。当然,它不是一个完整的BOM表,接下来的两个字节丢失了。然而,这足以致命地混淆StreamReader,它一直试图从流中读取数据,但从未到达任何地方,在尝试时消耗内存。最终,OOM是下一个 此错误也存在于.NET4.0中。错误的确切来源很难追踪,所涉及的代码不包括在参考源中。它可能被归类为关键攻击,因为它可用于DOS攻击。您可以在connect.microsoft.com上报告此错误。如果您不想,请告诉我,我会报告(MVP职责)。投票结果。网址: