Skip to main content

Co to jest dynamiczna alokacja pamięci?

Dynamiczna alokacja pamięci, zwana również alokacją pamięci opartą na stertych, jest rodzajem zarządzania pamięcią, który jest ostro kontrastowany przez alokacja pamięci statycznej.W dynamicznej alokacji pamięci programista informuje komputer dokładnie, ile pamięci do przydzielenia dla każdego programu i jak długo trzymać pamięć.Rozwiązuje to wiele problemów występujących w statycznym alokacji pamięci, takich jak nadużywanie pamięci i zatrzymane programy.Chociaż rozwiązuje wiele problemów, jeśli programista zapomnie powiedzieć pamięć, aby zrzucił, wówczas pamięć dynamiczna może stać się problemem.

Komputery domyślnie używają alokacji pamięci.Oznacza to, że pamięć utrzymuje programy, gdy są używane, nawet jeśli program nie jest już używany lub jeśli pamięć trzymana staje się niebezpieczna lub przeszkodą dla wydajności.Na przykład, jeśli użytkownik przestanie uruchamiać program, który przyjmuje 2 megabajty (MB) na maszynie 3 MB, a drugi program potrzebuje kolejnych 2 MB, drugi program nie zadziała.Wynika to z faktu, że w komputerze nie ma wystarczającej pamięci dla drugiego programu.

Z przydziałem pamięci statycznej użytkownik lub programista nie może określić ilości pamięci, którą chce, ani nie może powiedzieć, że programista zrzucił pamięć statyczną, aby zrzucił pamięć statycznąpamięć do zwolnienia zasobów.Właśnie dlatego zaawansowani użytkownicy często używają dynamicznej alokacji pamięci.Programator jest w stanie kontrolować wszystko w pamięci, w tym czas długości trzymania zasobów.

Na przykład programista może ustawić dynamiczną alokacja pamięci, aby utrzymać tylko 1 MB lub mniej, co zaoszczędziłby wystarczającą ilość pamięci systemowej, aby umożliwić inneprogramy do otwarcia.Można to zrobić, ponieważ pamięć statyczna zwykle trzyma się wszystkiego w programie, podczas gdy pamięć dynamiczna pozwala programistom ustawić ją o niższej wartości, która zawiera niektóre dane, ale nie wszystko.Jednocześnie nadal będzie potrzebna pamięć statyczna i można ją ustawić w tym schemacie alokacji.

Potencjalny problem z dynamiczną alokacją pamięci i mDash;taki, który rzadko wchodzi w grę mdash;jest to, że pamięć dynamiczna może się wypełnić, jeśli programista zapomnie ustawić wartość czasu.Jeśli nie zostanie ustalona wartość czasu, w przeciwieństwie do pamięci statycznej, która ostatecznie uwolni pamięć, pamięć dynamiczna utrzyma informacje.Jeśli program ma aplikację zrzutu śmieci, a większość robi to, aktywuje się po określonym czasie, aby wyczyścić pamięć.Nadal najlepszą praktyką jest ustalenie wartości czasowej dla alokacji pamięci.