Alokacja pamięci: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Kaczus2B (dyskusja | edycje)
m Dodałem informację, że automatycvzne zwalnianie pamięci dotyczy tylko niektórych systemów operacyjnych - są ciągle systemy, które tego nie robią. Są niszowe, ale zastany opis był błędny
m literówki
Linia 7:
Dla przykładu w języku [[c (język programowania)|C]], do ręcznej dynamicznej alokacji i dealokacji pamięci służą [[podprogram|funkcje]] [[Biblioteka standardowa języka C|biblioteki standardowej]]: <code>[[malloc]]</code> (alokacja) i <code>[[free (libc)|free]]</code> (dealokacja); w języku [[C++]] służą do tego specjalne słowa kluczowe ([[operator (programowanie)|operatory]]): <code>[[New (programowanie obiektowe)|new]]</code> oraz <code>[[delete]]</code>.
 
Najpopularniejsze obecnie systemy operacyjne automatycznie zwalniają pamięć przydzieloną procesom, gdy te zakończą działanie bez uprzedniej dealokacji otrzymanej pamięci. Na poziomie aplikacji pominięcie dealokacji doprowadza do [[wyciek pamięci|wycieku pamięci]], co w przypadku aplikacji działających przez długi czas (np. serwery, lub inne aplikacje wykonujące dużo dynamicznej alokacji i dealokacji pamięci), jest uważane za poważny błąd, jako, iż z biegiem czasu proces taki będzie potrzebował coraz więcej pamięci, co może doprowadzić nawet do jego zawieszeniezawieszenia, unicestwienia, znacznego spowolnienia działania całego systemu lub tezteż jego zawieszenia.
 
Alokacja pamięci nie powiedzie się, gdy nie istnieje wolny '''ciągły''' obszar pamięci o wymaganym rozmiarze (patrz [[Fragmentacja pamięci|fragmentacja zewnętrzna]]).