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

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

最佳答案

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

为什么要谈论fixed?您是否要加快速度?几乎可以肯定不会...

引用埃里克·利珀特的话:


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


Ref

关于c# - 何时在堆栈上分配固定大小的数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6053115/

10-16 04:29