Vad är dynamisk minnesallokering?
Dynamisk minnesallokering, även kallad heap-baserad minnesallokering, är en typ av minneshantering som är skarpt kontrast av statisk minnesallokering. Vid dynamisk minnesallokering berättar programmeraren datorn exakt hur mycket minne som ska tilldelas för varje program och hur lång tid att hålla fast i minnet. Detta löser många av de problem som uppstår vid statisk minnesallokering, såsom överanvändning av minne och stoppade program. Även om 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 använder som standard statisk minnesallokering. Detta betyder att minnet håller fast i 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. Om användaren till exempel slutar att köra ett program som tar 2 megabyte (MB) på en 3 MB-maskin och ett andra program behöver ytterligare 2 MB fungerar det andra programmet inte. Det 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 hur mycket minne han eller hon vill lagra, och programmeraren kan inte heller säga det statiska minnet att dumpa minnet för att frigöra resurser. Det är därför avancerade användare ofta använder dynamisk minnesallokering. Programmeraren kan kontrollera allt om minnet, inklusive hur länge han ska hålla fast vid resurserna.
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 systemminne för att andra program ska kunna öppnas. Detta kan göras eftersom det statiska minnet vanligtvis håller på allt om programmet, medan dynamiskt minne gör det möjligt för programmerare att ställa in det till ett lägre värde som innehåller vissa data, men inte allt. Samtidigt behövs fortfarande statiskt minne, och det kan ställas in i detta allokeringsschema.
Ett potentiellt problem med dynamisk minnesallokering - ett som sällan spelar in - ä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 släppa minnet, kommer dynamiskt minne att hålla fast vid informationen. Om programmet har en skräppostapplikation 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.