Alocarea dinamică a memoriei, numită și alocare de memorie bazată pe heap, este un tip de gestionare a memoriei care este puternic contrastată cu alocarea statică a memoriei. În alocarea dinamică a memoriei, programatorul îi spune computerului exact câtă memorie să aloce pentru fiecare program și cât timp să păstreze memorie. Acest lucru rezolvă multe dintre problemele care apar în alocarea de memorie statică, cum ar fi suprasolicitarea memoriei și programele blocate. În timp ce rezolvă multe probleme, dacă programatorul uită să spună memoriei să facă descărcare, atunci memoria dinamică poate deveni o problemă.
Calculatoarele, implicit, folosesc alocarea de memorie statică. Aceasta înseamnă că memoria păstrează programele atunci când sunt utilizate, chiar dacă programul nu mai este utilizat sau dacă memoria reținută devine periculoasă sau un obstacol pentru performanță. De exemplu, dacă utilizatorul încetează să ruleze un program care are 2 megaocteți (MB) pe o mașină de 3 MB și un al doilea program are nevoie de încă 2 MB, al doilea program nu va funcționa. Acest lucru se datorează faptului că nu mai există suficientă memorie în computer pentru celălalt program.
Cu alocarea de memorie statică, utilizatorul sau programatorul nu poate specifica cantitatea de memorie pe care o dorește să fie stocată și nici programatorul nu poate spune memoriei statice să arunce memoria pentru a elibera resurse. Acesta este motivul pentru care utilizatorii avansați folosesc adesea alocarea dinamică a memoriei. Programatorul este capabil să controleze totul despre memorie, inclusiv cât timp să păstreze resursele.
De exemplu, programatorul poate seta alocarea memoriei dinamice pentru a păstra doar 1 MB sau mai puțin, ceea ce ar economisi suficientă memorie de sistem pentru a permite deschiderea altor programe. Acest lucru se poate face deoarece memoria statică păstrează de obicei totul despre program, în timp ce memoria dinamică permite programatorilor să o seteze la o valoare mai mică, care deține unele date, dar nu totul. În același timp, memoria statică va fi în continuare necesară și poate fi setată în această schemă de alocare.
O problemă potențială cu alocarea memoriei dinamice – una care intră rar în joc – este că memoria dinamică se poate umple dacă programatorul uită să seteze o valoare de timp. Dacă nu este setată nicio valoare de timp, spre deosebire de memoria statică care va elibera în cele din urmă memoria, memoria dinamică va păstra informațiile. Dacă programul are o aplicație de gunoi și majoritatea o au, se va activa după o anumită perioadă de timp pentru a șterge memoria. Este încă cea mai bună practică să setați o valoare de timp pentru alocarea memoriei.