【发布时间】:2014-06-10 13:13:07
【问题描述】:
我正在尝试从文件中读取字节流。但是,当我尝试读取字节时,我得到一个
由于内存不足,函数评估被禁用 异常
很简单。但是,解决此问题的最佳方法是什么?一次循环长度是 1028 吗?还是有更好的办法?
我正在使用的 C#
BinaryReader br = new BinaryReader(stream fs);
// The length is around 600000000
long Length = fs.Length;
// Error here
bytes = new byte[Length];
for (int i = 0; i < Length; i++)
{
bytes [i] = br.ReadByte();
}
谢谢
【问题讨论】:
-
你真的需要所有内存中的数据吗?用例是什么?
-
在 32 位进程中分配 600 兆字节的几率非常低。很难在地址空间中找到一个 大的漏洞,除非您在启动程序后立即 这样做。当然有一个更好的解决方案,你不给我们一个猜测的机会。您需要 64 位操作系统或使用内存映射文件。
-
这很简单:您已经用完了可以在 .net 中解决的内存 (2GB)。或许,您不应该尝试在
bytes = new byte[Length];行中分配600M。你想用这些数据做什么? -
这是一条调试器消息。这并不意味着您的代码内存不足。
-
问题是如何使用这个数组?你真的需要一个数组吗?
标签: c# stream binaryreader