c# 2中字节数组内存不足

本文关键字:数组 内存不足 字节数 字节 | 更新日期: 2023-09-27 18:18:54

FileStream fs = File.OpenRead(fullFilePath);
try
{
    Console.WriteLine("Read file size is : " + fs.Length);
    byte[] bytes = new byte[fs.Length]; //// **error this line**
    fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
    fs.Close();
    return bytes;
}
finally
{
    fs.Close();
}

read file size 2,885,760 KB。是错误//

**Arithmetic operation resulted in an overflow.**

c# 2中字节数组内存不足

文件大小大于2GB问题是new byte[OverTwoBillionAndSome]超标。如果长度小于 2GB,则不会发生此错误(尽管仍建议不要将其完全读入内存)。

考虑用流式传输数据

byte[] bytes = new byte[fs.Length];

2,885,760大于2GB。你确定你的内存有足够的空间吗?很可能不是,这就是为什么会出现内存不足异常。

即使你有足够的内存空间,一个普通的32位也不能分配那么多的内存

正如Paul 所说的,问题是文件太大了。

但是在。net Framework 4.5中,你可以使用<gcAllowVeryLargeObjects> Element,它支持你使用总大小大于2gb的对象。

在64位平台上,启用大于2gb的数组(GB) .

你只需要改变你的配置设置,像;

<configuration>
  <runtime>
    <gcAllowVeryLargeObjects enabled="true" />
  </runtime>
</configuration>