Dynamisk minnesallokering, även kallad heap-baserad minnesallokering, är en typ av minneshantering som står i skarp kontrast till statisk minnesallokering. Vid dynamisk minnesallokering berättar programmeraren för datorn exakt hur mycket minne som ska allokeras för varje program och hur länge minnet ska hållas kvar. Detta löser många av de problem som uppstår vid statisk minnesallokering, såsom överanvändning av minne och program som har stannat. Även om det löser många problem, kan det dynamiska minnet bli ett problem om programmeraren glömmer att säga åt minnet att dumpa.
Datorer använder som standard statisk minnesallokering. Detta innebär att minnet håller kvar program när de används, även om programmet inte längre används eller om det lagrade minnet blir farligt eller ett hinder för prestanda. Om användaren till exempel 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 specificera hur mycket minne han eller hon vill ha lagrat, och programmeraren kan inte heller säga till 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 den ska hålla på resurser.
Till exempel kan programmeraren ställa in dynamisk minnesallokering så att den bara håller på 1 MB eller mindre, vilket skulle spara tillräckligt med systemminne för att tillåta andra program att öppna. Detta kan göras eftersom det statiska minnet vanligtvis håller på allt om programmet, medan dynamiskt minne tillåter programmerare att ställa in det på ett lägre värde som innehåller 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 – ett som sällan kommer in i bilden – ä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 kvar informationen. Om programmet har en sopdumpningsapplikation, och de flesta har det, aktiveras det efter en viss tid för att rensa minnet. Det är fortfarande bästa praxis att ställa in ett tidsvärde för minnestilldelningen.