pamiec (3)






Jezyk C - zarzadzanie pamiecia





Robert Chwastek - Język C








Moja strona główna




Spis treści




Poprzednia strona






Zarządzanie pamięcią

Każdy program napisany w języku C ma dostęp
do dwóch obszarów pamięci, w których może
być przechowywana zmienna ilość danych: stosu i sterty. Na
stosie przechowywane są zmienne lokalne (automatyczne). Również
wywołania funkcji zostawiają ślad na stosie, aby było wiadomo
dokąd program ma powrócić po zakończeniu funkcji.
Stos obsługiwany jest automatycznie i programista nie ma możliwości
ingerencji w tą obsługę (w zwykłym programie). Drugi
obszar pamięci, z którego można korzystać pisząc
programy w języku C, to sterta. Sterta jest obszarem pamięci
udostępnianym przez system operacyjny wszystkim wykonującym
się procesom. W systemach wielodostępnych (np. UNIX) istnieją
jednak zabezpieczenia, które uniemożliwiają dostęp
procesu do pamięci, z której korzysta inny proces (chyba,
że tamten proces zezwoli na dostęp innemu procesowi). Ponieważ
wielkość sterty jest ograniczona (choć na ogół
dość duża - często znacznie większa niż
obszar stosu), więc procesy działające w systemie współzawodniczą
ze sobą o dostęp do tego obszaru. Przydziałem pamięci
zajmuje się system operacyjny, może on jednak przydzielić
tylko tyle pamięci ile w danej chwili jest wolne. Dlatego procesy,
którym pamięć została przydzielona, powinny informować
system, że z niej nie korzystają (zwalniać) natychmiast
po tym jak pamięć przestaje być im potrzebna.

Do obsługi pamięci służą zmienne
wskaźnikowe. Dużym problemem jest takie napisanie programu, by nie
próbował on czytać lub zapisywać pamięci,
która nie została mu przydzielona (powoduje to błąd
wykonania i natychmiastowe zakończenie programu w systemach z ochroną
pamięci lub bardzo trudne do wykrycia błędy w systemach
bez ochrony pamięci lub wtedy, gdy program modyfikuje swoją
pamięć, ale w nieprzewidzianym miejscu) i równocześnie
zwalniał całą przydzieloną i zbędną już
pamięć. Należy pamiętać, że wskaźniki,
podobnie jak inne zmienne, w momencie deklaracji mają wartość
nieokreśloną i programista musi zadbać, by ich wartość
była sesnsowna.











Moja strona główna




Spis treści




Następna strona

Wszelkie komentarze lub poprawki prześlij proszę na adres:
Robert.Chwastek@kt.agh.edu.pl
© Robert Chwastek, luty 1997






Wyszukiwarka

Podobne podstrony:
Sprawdź swoją pamięć A4
uczenie sie i pamiec
Zimowym rankiem w Edo pamięci 47 roninów
Lekcja 7 Trening pamieci to nie wszystko Zadbaj o swoja koncentracje
religia jako pamięć

więcej podobnych podstron