gpt4 book ai didi

.net - 为什么 StreamReader.ReadLine 会抛出 OutOfMemoryException?

转载 作者:行者123 更新时间:2023-12-04 11:44:46 24 4
gpt4 key购买 nike

谁能告诉我为什么最后 这里的行抛出 OOM 异常?

        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 框架中发现了一个错误。它由字节值(十六进制的 0xef)引起。这是UTF-8 BOM的第一个字节.它当然不是完整的 BOM,缺少接下来的两个字节。然而,它足以让 StreamReader 致命地混淆,它不断尝试从流中读取数据而没有到达任何地方,在尝试时消耗内存。 OOM 最终是下一个。

.NET 4.0 中也存在此错误。错误的确切来源很难追踪,所涉及的代码未包含在引用源中。它可能被归类为关键的,因为它可以用于 DOS 攻击。您可以在 connect.microsoft.com 报告错误。如果您不想,请告诉我,我会报告(MVP 职责)。

关于.net - 为什么 StreamReader.ReadLine 会抛出 OutOfMemoryException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com