Quand un tableau de taille fixe est-il alloué sur la pile ?
-
15-11-2019 - |
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.
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.