Co to jest dynamiczna alokacja pamięci?
Dynamiczny alokacja pamięci, zwana również alokacją pamięci opartą na stosie, 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. Podczas gdy rozwiązuje wiele problemów, jeśli programista zapomnie powiedzieć pamięć zrzucającą, wówczas pamięć dynamiczna może stać się problemem.
komputery, domyślnie użyj alokacji pamięci statycznej. 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. Dzieje się tak, ponieważ nie ma enPamięć pozostawiona na komputerze dla drugiego programu.
Przy statycznym alokacji pamięci użytkownik lub programista nie może określić ilości pamięci, którą chce, ani nie może powiedzieć, że pamięć statyczna zrzuciła pamięć, aby uwolnić zasoby. Właśnie dlatego zaawansowani użytkownicy często używają dynamicznej alokacji pamięci. Programista jest w stanie kontrolować wszystko w pamięci, w tym czas długiego trzymania zasobów.
Na przykład programista może ustawić dynamiczny alokacja pamięci, aby utrzymać tylko 1 MB lub mniej, co zaoszczędziłoby wystarczającą ilość pamięci systemowej, aby umożliwić otwarcie innych programów. 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.Potencjalnym problemem z dynamiczną alokacją pamięci - taki, który rzadko wchodzi w grę - 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 czasu dla alokacji pamięci.