Skip to main content

Vad är dynamiskt minnesallokering?

Dynamisk minnesallokering, även kallad heap-baserad minnesallokering, är en typ av minneshantering som är skarpt kontrast av statisk minnesallokering.I dynamisk minnesallokering berättar programmeraren datorn exakt hur mycket minne som ska tilldelas för varje program och hur länge du ska hålla fast vid minnet.Detta löser många av de problem som uppstår i statisk minnesallokering, till exempel överanvändning av minne och stoppade program.Medan det löser många problem, om programmeraren glömmer att berätta för minnet att dumpa, kan det dynamiska minnet bli ett problem.

Datorer, som standard, använder statisk minnesallokering.Detta betyder att minnet håller fast vid program när de används, även om programmet inte längre används eller om det hållna minnet blir farligt eller ett hinder för prestanda.Till exempel, om användaren slutar köra ett program som tar 2 megabyte (MB) på en 3 MB -maskin, och ett andra program behöver ytterligare 2 MB, kommer det andra programmet inte att fungera.Detta beror på att det inte finns tillräckligt med minne kvar i datorn för det andra programmet.

Med statisk minnesallokering kan användaren eller programmeraren inte ange mängden minne han eller hon vill lagra, och programmeraren kan inte heller säga det statiska minnet att dumpaminnet för att frigöra resurser.Det är därför avancerade användare ofta använder dynamisk minnesallokering.Programmeraren kan styra allt om minnet, inklusive hur lång tid att hålla fast vid resurser.

Till exempel kan programmeraren ställa in dynamisk minnesallokering för att hålla fast vid endast 1 MB, eller mindre, vilket skulle spara tillräckligt med systemminne för att tillåta andraprogram att öppna.Detta kan göras eftersom det statiska minnet vanligtvis håller fast vid allt om programmet, medan dynamiska minne gör det möjligt för programmerare att ställa in det till ett lägre värde som har en del data, men inte allt.Samtidigt kommer statiskt minne fortfarande att behövas, och det kan ställas in i detta tilldelningsschema.

Ett potentiellt problem med dynamisk minnesallokering mdash;en som sällan spelar in mdash;är att det dynamiska minnet kan fyllas om programmeraren glömmer att ställa in ett tidsvärde.Om inget tidsvärde ställs in, till skillnad från statiskt minne som så småningom kommer att frigöra minnet, kommer dynamiskt minne att hålla fast vid informationen.Om programmet har en applikation för sopor, och de flesta gör det, kommer det att aktiveras efter en viss tid för att rensa minnet.Det är fortfarande bästa praxis att ställa in ett tidsvärde för minnesallokering.