Question

J'ai la méthode suivante pour copier des octets d'un flux de socket sur le disque :

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

Ce qui m'intéresse, c'est :volonté buffer être alloué sur la pile ou sur le tas?Pour être sûr, je pourrais rendre cette méthode dangereuse et ajouter le fixed Mots-clés à la déclaration variable, mais je ne veux pas faire ça, je n'ai pas à le faire.

Était-ce utile?

La solution

Le buffer variable sera allouée sur la pile, la mémoire de 8192 octets la buffer La variable contient l'emplacement de sera sur le tas.

pourquoi tu parles de fixed?Essayez-vous d’accélérer les choses ?Ce ne sera certainement pas le cas...

Pour citer Eric Lippert :

"Mais dans la grande majorité des programmes, les allocations et les négociations variables locales ne seront pas le goulot d'étranglement des performances."

Réf.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top