Pergunta

Eu tenho o seguinte método para copiar bytes de um fluxo de soquete para o disco:

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

O que estou curioso é:vai buffer ser alocado na pilha ou na pilha?Com certeza, eu poderia tornar esse método inseguro e adicionar o fixed Palavra -chave para a declaração variável, mas não quero fazer isso se não preciso.

Foi útil?

Solução

O buffer variável será alocada na pilha, a memória de 8192 bytes será buffer variável mantém a localização de estará no heap.

por que você está falando fixed?Você está tentando acelerar as coisas?É quase certo que não...

Para citar Eric Lippert:

"Mas na grande maioria dos programas por aí, alocações e desalocações de variáveis ​​locais não serão o gargalo de desempenho."

Referência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top