Dinamično dodeljevanje pomnilnika, imenovano tudi dodeljevanje pomnilnika na podlagi kopice, je vrsta upravljanja pomnilnika, ki je v ostrem nasprotju s statično dodelitvijo pomnilnika. Pri dinamični dodelitvi pomnilnika programer računalniku natančno pove, koliko pomnilnika naj dodeli vsakemu programu in koliko časa naj zadrži pomnilnik. To rešuje številne težave, ki se pojavljajo pri dodeljevanju statičnega pomnilnika, kot so prekomerna poraba pomnilnika in zastoji programi. Čeprav rešuje veliko težav, če programer pozabi povedati pomnilniku, naj se izprazni, lahko dinamični pomnilnik postane težava.
Računalniki privzeto uporabljajo statično dodeljevanje pomnilnika. To pomeni, da pomnilnik zadrži programe, ko se uporabljajo, tudi če se program ne uporablja več ali če zadržani pomnilnik postane nevaren ali ovira za delovanje. Na primer, če uporabnik preneha izvajati program, ki zavzame 2 megabajta (MB) na napravi s 3 MB, drugi program pa potrebuje še 2 MB, drugi program ne bo deloval. To je zato, ker v računalniku ni dovolj pomnilnika za drug program.
Pri statičnem dodeljevanju pomnilnika uporabnik ali programer ne more določiti količine pomnilnika, ki ga želi shraniti, niti programer ne more povedati statičnemu pomnilniku, naj izprazni pomnilnik, da sprosti vire. Zato napredni uporabniki pogosto uporabljajo dinamično dodeljevanje pomnilnika. Programer lahko nadzoruje vse v zvezi s pomnilnikom, vključno s tem, kako dolgo naj zadrži vire.
Programer lahko na primer nastavi dinamično dodeljevanje pomnilnika tako, da zadržuje le 1 MB ali manj, kar bi prihranilo dovolj sistemskega pomnilnika za odpiranje drugih programov. To je mogoče storiti, ker statični pomnilnik običajno drži vse o programu, medtem ko dinamični pomnilnik omogoča programerjem, da ga nastavijo na nižjo vrednost, ki vsebuje nekaj podatkov, vendar ne vsega. Hkrati bo še vedno potreben statični pomnilnik, ki ga je mogoče nastaviti v tej shemi dodelitve.
Potencialna težava z dinamičnim dodeljevanjem pomnilnika – ki se redko pojavi – je, da se lahko dinamični pomnilnik napolni, če programer pozabi nastaviti časovno vrednost. Če časovna vrednost ni nastavljena, za razliko od statičnega pomnilnika, ki bo sčasoma sprostil pomnilnik, bo dinamični pomnilnik zadržal informacije. Če ima program aplikacijo za smeti, in večina jih ima, se bo aktiviral po določenem času, da počisti pomnilnik. Še vedno je najboljša praksa, da nastavite časovno vrednost za dodelitev pomnilnika.