0

I have the following method to copy bytes from a socket stream to disk:

 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);
    }
}

What I am curious about is: will buffer be allocated on the stack or on the heap? To be sure, I could make this method unsafe, and add the fixed keyword to the variable declaration, but I don't want to do that ifn I don't have to.

4

1 に答える 1

4

変数はスタックに割り当てられ、変数がその場所を保持bufferする 8192 バイトのメモリbufferはヒープになります。

なぜあなたは話しているのfixedですか?物事をスピードアップしようとしていますか?ほぼ間違いないだろう…

Eric Lippert 氏の言葉を引用すると、次のようになります。

「しかし、大多数のプログラムでは、ローカル変数の割り当てと割り当て解除がパフォーマンスのボトルネックになることはありません。」

参照

于 2011-05-19T02:28:51.947 に答える