Speicher
In Rust gibt es 3 unterschiedliche Speicher-Regionen:
- data memory (Datenspeicher) - Für Daten mit fester Größe und die statisch sind (zur Gesamtlebenszeit
eines Programms verfügbar). Nehmen wir beispielsweise festen Text her (z.B.
"Hallo Welt"
). Die Bytes in
diesem Schnipsel werden nur gelesen und sind bereits zur Kompilierzeit bekannt, daher kommen sie in den
Datenspeicher. Compiler können dementsprechend den Code optimieren und sind in der Laufzeit am schnellsten
"auszuwerten."
- stack memory (Stackspeicher) - Variablen, die innerhalb einer Funktion deklariert werden. Während eines
Funktionsaufrufs ändert sich der Standort nicht. Wird eine weitere Funktion aufgerufen, werden die von der
Unterfunktion benötigen Variablen weiter auf den Stack gelegt. Erreicht man das Ende der Funktion, werden die
entsprechenden Variablen wieder vom Stack runtergenommen.
- heap memory (Heapspeicher) - Speicher, der zur Laufzeit für Daten reserviert wird. In dieser Region kann
Speicher reserviert, bewegt, vergrößert, verkleinert und freigegeben werden. Dieses dynamische
Speichermanagement kann etwas mehr Zeit in Anspruch nehmen. Beim Reservieren spricht man von memory allocationt
(allozieren), beim Freigeben von memory deallocation.