Zum Inhalt springen

Speicherverwaltung

Welche der folgenden Aussagen beschreibt am besten den Unterschied zwischen Stack und Heap?

Frames im Stack sind einer bestimmten Funktion zugeordnet und werden freigegeben, wenn die Funktion zurückkehrt. Daten auf dem Heap können unbegrenzt lange existieren. Beachten Sie, dass sowohl Stack- als auch Heap-Daten veränderlich und kopierbar sein können. Der Heap darf Zeiger enthalten (sogar auf den Stack, wie wir später sehen werden).


Betrachten Sie die Ausführung des folgenden Snippets, wobei der Endzustand angezeigt wird:

#fn main() {
let a = Box::new(15);
let b = a;
let c = Box::new(15);
#}

Wie viele Kopien der Zahl 15 existieren im Endzustand irgendwo im Speicher? Schreiben Sie Ihre Antwort als Ziffer, z.B. 0 oder 1.

Die beiden Boxen enthalten die beiden Kopien der Zahl 15. Die Zuweisung let b = a kopiert den Heap-Zeiger, aber nicht die Zahl auf dem Heap.