Alokasi memori dinamis, juga disebut alokasi memori berbasis tumpukan, adalah jenis manajemen memori yang sangat kontras dengan alokasi memori statis. Dalam alokasi memori dinamis, pemrogram memberi tahu komputer dengan tepat berapa banyak memori yang harus dialokasikan untuk setiap program dan berapa lama untuk menyimpan memori. Ini memecahkan banyak masalah yang terjadi dalam alokasi memori statis, seperti penggunaan memori yang berlebihan dan program yang terhenti. Sementara itu memecahkan banyak masalah, jika programmer lupa memberitahu memori untuk dibuang, maka memori dinamis bisa menjadi masalah.
Komputer, secara default, menggunakan alokasi memori statis. Ini berarti memori menyimpan program saat digunakan, bahkan jika program tersebut tidak lagi digunakan atau jika memori yang disimpan menjadi berbahaya atau menghambat kinerja. Misalnya, jika pengguna berhenti menjalankan program yang membutuhkan 2 megabyte (MB) pada mesin 3 MB, dan program kedua membutuhkan 2 MB lagi, program kedua tidak akan berfungsi. Ini karena tidak ada cukup memori yang tersisa di komputer untuk program lain.
Dengan alokasi memori statis, pengguna atau pemrogram tidak dapat menentukan jumlah memori yang ingin disimpannya, pemrogram juga tidak dapat memberi tahu memori statis untuk membuang memori untuk membebaskan sumber daya. Inilah sebabnya mengapa pengguna tingkat lanjut sering menggunakan alokasi memori dinamis. Pemrogram dapat mengontrol segala sesuatu tentang memori, termasuk berapa lama untuk menyimpan sumber daya.
Misalnya, programmer dapat mengatur alokasi memori dinamis untuk menampung hanya 1 MB, atau kurang, yang akan menghemat memori sistem yang cukup untuk memungkinkan program lain dibuka. Hal ini dapat dilakukan karena memori statis biasanya menyimpan segala sesuatu tentang program, sementara memori dinamis memungkinkan pemrogram untuk mengaturnya pada nilai yang lebih rendah yang menyimpan beberapa data, tetapi tidak semuanya. Pada saat yang sama, memori statis akan tetap dibutuhkan, dan dapat diatur dalam skema alokasi ini.
Masalah potensial dengan alokasi memori dinamis — yang jarang terjadi — adalah bahwa memori dinamis dapat terisi jika programmer lupa menetapkan nilai waktu. Jika tidak ada nilai waktu yang ditetapkan, tidak seperti memori statis yang pada akhirnya akan melepaskan memori, memori dinamis akan menyimpan informasi. Jika program memiliki aplikasi pembuangan sampah, dan sebagian besar memilikinya, program tersebut akan aktif setelah beberapa waktu untuk mengosongkan memori. Ini masih merupakan praktik terbaik untuk menetapkan nilai waktu untuk alokasi memori.