何时在堆栈上分配固定大小的数组?

时间:2011-05-19 02:24:19

标签: c# stack heap fixed unsafe-pointers

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

 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关键字 变量声明,但我不想这样做,如果我没有。

1 个答案:

答案 0 :(得分:4)

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

你为什么要谈论fixed?你想加快速度吗?几乎肯定不会......

引用Eric Lippert:

  

“但在绝大多数节目中   在那里,局部变量分配   和解除分配不会   性能瓶颈。 “

Ref