Što je dinamička raspodjela memorije?

Dinamička dodjela memorije, također nazvana dodjela memorije temeljena na hrpi, vrsta je upravljanja memorijom koja je u oštroj suprotnosti sa statičkom dodjelom memorije. Kod dinamičke dodjele memorije, programator govori računalu koliko memorije treba dodijeliti za svaki program i koliko dugo treba zadržati memoriju. To rješava mnoge probleme koji se javljaju u statičkoj dodjeli memorije, kao što su prekomjerna upotreba memorije i zaustavljeni programi. Iako rješava mnoge probleme, ako programer zaboravi reći memoriji da se isprazni, dinamička memorija može postati problem.

Računala prema zadanim postavkama koriste statičku dodjelu memorije. To znači da memorija zadržava programe kada se koriste, čak i ako se program više ne koristi ili ako zadržana memorija postane opasna ili prepreka za izvedbu. Na primjer, ako korisnik prestane izvoditi program koji zauzima 2 megabajta (MB) na stroju od 3 MB, a drugom programu treba još 2 MB, drugi program neće raditi. To je zato što u računalu nema dovoljno memorije za drugi program.

Uz statičku dodjelu memorije, korisnik ili programer ne može odrediti količinu memorije koju želi pohraniti, niti programer može reći statičkoj memoriji da izbaci memoriju kako bi oslobodio resurse. Zbog toga napredni korisnici često koriste dinamičku dodjelu memorije. Programer može kontrolirati sve u vezi s memorijom, uključujući i koliko dugo treba zadržati resurse.

Na primjer, programer može postaviti dinamičku dodjelu memorije da zadrži samo 1 MB ili manje, što bi uštedjelo dovoljno memorije sustava da bi se omogućilo otvaranje drugih programa. To se može učiniti jer statička memorija obično drži sve o programu, dok dinamička memorija omogućuje programerima da je postave na nižu vrijednost koja sadrži neke podatke, ali ne sve. U isto vrijeme, statička memorija će i dalje biti potrebna, a može se postaviti u ovoj shemi dodjele.

Potencijalni problem s dinamičkom dodjelom memorije – onaj koji rijetko dolazi u obzir – je taj što se dinamička memorija može popuniti ako programer zaboravi postaviti vrijednost vremena. Ako nije postavljena vremenska vrijednost, za razliku od statičke memorije koja će je na kraju osloboditi, dinamička memorija će zadržati informacije. Ako program ima aplikaciju za smeće, a većina ih ima, aktivirat će se nakon određenog vremena kako bi se očistila memorija. Još uvijek je najbolja praksa postaviti vremensku vrijednost za dodjelu memorije.