Pamięć dynamiczna

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Pamięć dynamiczna

Dotychczas używając pamięci trzeba było z góry znać jej wielkość, aby zadeklarować odpowiednią strukturę danych. Takie rozwiązanie bywa niewygodne, gdy nie wiemy, z jak dużymi danymi będziemy mieli do czynienia. Często bowiem wraz z danymi pojawia się ich rozmiar dopiero wtedy chcielibyśmy ustalać wielkość struktury danych. Temu celowi służy tzw. pamięć dynamiczna, czyli taka, której rezerwacja i zwalnianie odbywa się w czasie działania programu.

System operacyjny uruchamiając program przeznacza na jego obsługę fragment pamięci, zapewniając wyłączność tak, aby żaden inny proces nie mógł się do niej dostać. W tym fragmencie przydzielonej pamięci mieści się kod programu, dane statyczne (czyli zadeklarowane na etapie deklaracji) oraz dane dynamiczne, czyli takie, dla których pamięć jest rezerwowana i zwalniana na bieżąco. W naszym języku będzie można deklarować zmienne dynamiczne, które będą rozpoznawane dzięki poprzedzeniu typu przy deklaracji symbolem ^, na przykład deklaracja

var px:^Integer;

będzie traktowana jako deklaracja zmiennej wskaźnikowej do obiektu typu całkowitego.

Alokacja i zwalnianie pamięci dynamicznej

Przydział (alokacja) i zwalnianie (dealokacja) pamięci dynamicznej odbywa się za pomocą dwóch procedur: New(z) oraz Dispose(z). Obie te procedury mają jeden argument: zmienną.