Pok-13-wyk-Slajd39
Środowisko czasu wykonania – system DPP
System DPP, w najprostszym przypadku, musi udostępniać dwie operacje:
- alokację pamięci o zadanym rozmiarze, w niektórych językach służą do tego funkcje biblioteczne (w języku C – funkcja malloc), w innych – słowa kluczowe (w języku C++ – słowo kluczowe new)
- uzyskanie dostępu do zawartości przydzielonego bloku, w językach programowania służą do tego celu operatory adresowania pośredniego (w Pascalu – ‘^’, w C – ‘*’ i ‘->’)
Problem zwalniania przydzielonej przez system DPP pamięci może być rozwiązany na dwa sposoby:
- zwalnianie następuje w wyniku wywołania określonego podprogramu (w języku C – funkcji free) lub użycia słowa kluczowego (w C++ – słowa kluczowego delete)
- język nie udostępnia możliwości jawnego zwalniania pamięci, jest ona automatycznie oczyszczana w trakcie procesu tzw. zbierania nieużytków.
Mechanizm zbierania nieużytków automatycznie zwalnia niedostępne obszary pamięci, czyli takie, które nie są wskazywane przez żadne wskaźniki. Jego wykorzystanie istotnie zmniejsza liczbę błędów związanych z używaniem pamięci dynamicznej, ale budzi też pewne kontrowersje ze względu na trudne do przewidzenia czasy odpowiedzi operacji (co jest mało istotne w systemach ogólnego przeznaczenia). Jednak w językach przeznaczonych do implementacji systemów silnie uwarunkowanych czasowo albo wcale się z niego nie korzysta, albo umożliwia się dostęp do obu mechanizmów zwalniania pamięci (Ada).