Pamięć dynamiczna: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pch (dyskusja | edycje)
Pch (dyskusja | edycje)
Linia 2: Linia 2:
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.  
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
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 <tt> ^</tt>, 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: <tt>New(z)</tt> oraz <tt>Dispose(z)</tt>. Obie te procedury mają jeden argument: zmienną.

Wersja z 12:37, 30 wrz 2006

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ą.