Pamięć
Programy pisane w Ruscie mają do dyspozycji 3 rodzaje pamięci:
- dane - Jest to pamięć przeznaczona dla danych statycznych, tj. takich które nie podlegają zmianom w trakcie trwania programu.
Wyobraź sobie tekst zadeklarowany w ramach prostego programu "Hello World!".
Bajty użyte do przechowania prostego tekstu nie będą podlegać zmianom podczas trwania
programu, mogą więc być odczytywane wielokrotnie z jednego regionu pamięci.
Właśnie ze względu na ich statyczny charakter, kompilator jest w stanie silnie
zoptymalizować dostęp do tego typu danych.
- stos - Pamięć gdzie przechowywane są zmienne wewnątrz funkcji.
Lokalizacja pamięci używanej przez stos pozostaje niezmieniona podczas całego czasu
trwania wywołania funkcji. Oznacza to, że kompilator może dokonać pewnych optymalizacji
przyspieszających korzystanie z tej pamięci.
- sterta - Pamięć tworzona na potrzeby programu podczas jego trwania.
W tym regionie pamięci dane mogą być na bieżąco dodawane, przenoszone, usuwane,
przeskalowywane, itp. Ze względu na swoją dynamiczną naturę, sterta jest zwykle
wolniejsza od stosu, ale zamiast tego pozwala na bardziej kreatywne wykorzystanie
dostępnej pamięci. Kiedy dodajemy dane na stertę, taką operację nazywamy alokacją,
natomiast kiedy dane usuwamy, wówczas mówimy o dealokacji.