0

我有以下方法将字节从套接字流复制到磁盘:

 public static void CopyStream(Stream input, Stream output)
 {
    // Insert null checking here for production
    byte[] buffer = new byte[8192];
    int bytesRead;
    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, bytesRead);
    }
}

我比较好奇的是:会buffer分配在栈上还是堆上?可以肯定的是,我可以使此方法不安全,并将fixed关键字添加到变量声明中,但如果我不必这样做,我不想这样做。

4

1 回答 1

4

buffer变量将在堆栈上分配,变量所在位置的 8192 字节内存将buffer在堆上。

你在说什么fixed?你想加快速度吗?几乎肯定不会...

引用 Eric Lippert 的话:

“但在绝大多数程序中,局部变量分配和释放不会成为性能瓶颈。”

参考

于 2011-05-19T02:28:51.947 回答