Pregunta

Tengo el siguiente método para copiar los bytes de un socket de flujo de disco a:

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

Lo que tengo curiosidad por saber es:se buffer se almacena en la pila o en el del montón?Para estar seguro, yo podría hacer que este método inseguro, y agregar el fixed la palabra clave para la declaración de la variable, pero no quiero hacer que el ifn no tengo que.

¿Fue útil?

Solución

El buffer variable será asignado en la pila, el 8192 bytes de memoria de la buffer variable contiene la ubicación será en el montón.

por qué estás hablando fixed?Está tratando de acelerar las cosas?Es casi seguro que no...

Citando a Eric Lippert:

"Pero en la gran mayoría de los programas de hay, de la variable local asignaciones y deallocations no va a ser el cuello de botella de rendimiento."

Ref.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top