我有以下方法将字节从套接字流复制到磁盘:
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
关键字
变量声明,但我不想这样做,如果我没有。
答案 0 :(得分:4)
buffer
变量将在堆栈上分配,8192字节内存buffer
变量保存堆栈的位置。
你为什么要谈论fixed
?你想加快速度吗?几乎肯定不会......
引用Eric Lippert:
“但在绝大多数节目中 在那里,局部变量分配 和解除分配不会 性能瓶颈。 “