Wann wird ein Array fester Größe auf dem Stapel zugewiesen?
-
15-11-2019 - |
Frage
Ich habe die folgende Methode, um Bytes von einem Socket-Stream auf die Festplatte zu kopieren:
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);
}
}
Worauf ich neugierig bin, ist:Wille buffer
auf dem Stapel oder auf dem Haufen zugewiesen werden?Natürlich könnte ich diese Methode unsicher machen und das hinzufügen fixed
Schlüsselwort zur Variablenerklärung, aber ich möchte das nicht tun, wenn ich nicht muss.
Lösung
Der buffer
Die Variable wird auf dem Stapel zugewiesen, der 8192-Byte-Speicher beträgt buffer
Die Variable enthält den Speicherort, an dem sie sich auf dem Heap befindet.
Warum redest du? fixed
?Versuchen Sie, die Dinge zu beschleunigen?Das wird es mit ziemlicher Sicherheit nicht...
Um Eric Lippert zu zitieren:
"Aber in der überwiegenden Mehrheit der Programme da draußen werden lokale variable Zuteilungen und Deals nicht der Leistungsengpass sein."
Ref.