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

Dodane 9 bajtów ,  9 lat temu
Zamiana słowa "dealokacja" na "dezalokacja" zgodnie z zasadami poprawnej polszyczyzny, opisanymi np. tu: http://poradnia.pwn.pl/lista.php?id=1903.
(Zamiana słowa "dealokacja" na "dezalokacja" zgodnie z zasadami poprawnej polszyczyzny, opisanymi np. tu: http://poradnia.pwn.pl/lista.php?id=1903.)
'''Alokacja pamięci''' oraz '''dealokacjadezalokacja pamięci''' - w informatyce to odpowiednio przydział i zwolnienie '''ciągłego''' obszaru [[pamięć komputerowa|pamięci]]. Po uruchomieniu, [[proces (informatyka)|proces]] (program) otrzymuje od [[system operacyjny|systemu operacyjnego]] jedną lub więcej pul dostępnej [[pamięć komputerowa|pamięci]] możliwej do dowolnego wykorzystania. W zależności od przyjętej konstrukcji i zastosowania obszar nazywany jest '''[[sterta (informatyka)|stertą]]''' (ang. ''heap'') lub [[stos (informatyka)|stosem]]. W trakcie działania program może zażądać od systemu operacyjnego większej ilości pamięci ('''alokacja''') lub też zwolnić niepotrzebny obszar ('''dealokacjadezalokacja''').
 
Wewnętrznie programy samodzielnie zarządzają przydzieloną im pamięcią - niskopoziomowe [[język programowania|języki programowania]] dostarczają interfejs programistyczny do zarządzania stertą, który oferuje wyłącznie możliwość zarezerwowania pewnego obszaru ('''alokacja''') i późniejszego jego zwalniania ('''dealokacjadezalokacja'''). Wiele wysokopoziomowych języków programowania [[odśmiecanie pamięci|automatycznie]] przeprowadza procedurę dealokacjidezalokacji, bez udziału programisty.
 
Dla przykładu w języku [[c (język programowania)|C]], do ręcznej dynamicznej alokacji i dealokacjidezalokacji pamięci służą [[podprogram|funkcje]] [[libc|biblioteki standardowej]]: <code>[[malloc]]</code> (alokacja) i <code>[[free (libc)|free]]</code> (dealokacjadezalokacja); w języku [[C++]] służą do tego specjalne słowa kluczowe ([[operator (programowanie)|operatory]]): <code>[[new]]</code> oraz <code>[[delete]]</code>.
 
Systemy operacyjne automatycznie zwalniają pamięć przydzieloną procesom, gdy te zakończą działanie bez uprzedniej dealokacjidezalokacji otrzymanej pamięci. Na poziomie aplikacji pominięcie dealokacjidezalokacji doprowadza do [[wyciek pamięci|wycieku pamięci]], co w przypadku aplikacji działających długi czas (np. serwery, lub inne aplikacje wykonujące dużo dynamicznej alokacji i dealokacjidezalokacji 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 zawieszenie, unicestwienia, znacznego spowolnienia działania całego systemu lub tez jego zawieszenia.
 
Alokacja pamięci nie powiedzie się, gdy nie istnieje wolny '''ciągły''' obszar pamięci o wymaganym rozmiarze (patrz [[fragmentacja zewnętrzna]]).
Anonimowy użytkownik