การจัดสรรหน่วยความจำแบบไดนามิกหรือที่เรียกว่าการจัดสรรหน่วยความจำแบบอิงฮีปคือประเภทของการจัดการหน่วยความจำที่แตกต่างอย่างมากจากการจัดสรรหน่วยความจำแบบคงที่ ในการจัดสรรหน่วยความจำแบบไดนามิกโปรแกรมเมอร์จะบอกคอมพิวเตอร์ว่าต้องจัดสรรหน่วยความจำเท่าใดสำหรับแต่ละโปรแกรมและระยะเวลาที่จะเก็บหน่วยความจำ วิธีนี้จะช่วยแก้ปัญหาต่าง ๆ ที่เกิดขึ้นในการจัดสรรหน่วยความจำแบบสแตติกเช่นการใช้หน่วยความจำมากเกินไปและโปรแกรมจนตรอก ในขณะที่มันแก้ปัญหาต่าง ๆ ถ้าโปรแกรมเมอร์ลืมบอกหน่วยความจำการถ่ายโอนข้อมูลหน่วยความจำแบบไดนามิกอาจกลายเป็นปัญหา
คอมพิวเตอร์โดยค่าเริ่มต้นใช้การจัดสรรหน่วยความจำแบบคงที่ ซึ่งหมายความว่าหน่วยความจำจะเข้าสู่โปรแกรมเมื่อมีการใช้งานแม้ว่าจะไม่ได้ใช้งานโปรแกรมอีกต่อไปหรือถ้าหน่วยความจำที่เก็บไว้นั้นอันตรายหรือเป็นอุปสรรคต่อการปฏิบัติงาน ตัวอย่างเช่นหากผู้ใช้หยุดการทำงานของโปรแกรมที่ใช้ 2 เมกะไบต์ (MB) บนเครื่อง 3 MB และโปรแกรมที่สองต้องการอีก 2 MB โปรแกรมที่สองจะไม่ทำงาน นี่เป็นเพราะมีหน่วยความจำเหลือไม่เพียงพอในคอมพิวเตอร์สำหรับโปรแกรมอื่น
ด้วยการจัดสรรหน่วยความจำแบบคงที่ผู้ใช้หรือโปรแกรมเมอร์ไม่สามารถระบุจำนวนหน่วยความจำที่เขาหรือเธอต้องการเก็บไว้และโปรแกรมเมอร์ไม่สามารถบอกหน่วยความจำแบบคงที่เพื่อถ่ายโอนข้อมูลหน่วยความจำเพื่อเพิ่มทรัพยากร นี่คือเหตุผลที่ผู้ใช้ขั้นสูงมักใช้การจัดสรรหน่วยความจำแบบไดนามิก โปรแกรมเมอร์สามารถควบคุมทุกอย่างเกี่ยวกับหน่วยความจำรวมถึงระยะเวลาในการเก็บทรัพยากร
ตัวอย่างเช่นโปรแกรมเมอร์สามารถตั้งค่าการจัดสรรหน่วยความจำแบบไดนามิกให้เก็บไว้เพียง 1 MB หรือน้อยกว่าซึ่งจะประหยัดหน่วยความจำระบบเพียงพอที่จะอนุญาตให้โปรแกรมอื่นเปิด สิ่งนี้สามารถทำได้เนื่องจากหน่วยความจำแบบสแตติกมักจะเก็บทุกอย่างเกี่ยวกับโปรแกรมในขณะที่หน่วยความจำแบบไดนามิกอนุญาตให้โปรแกรมเมอร์ตั้งค่าที่ต่ำกว่าที่เก็บข้อมูลบางอย่าง แต่ไม่ใช่ทุกอย่าง ในเวลาเดียวกันหน่วยความจำแบบคงที่จะยังคงต้องการและสามารถตั้งค่าได้ในสคีมาการจัดสรรนี้
ปัญหาที่อาจเกิดขึ้นกับการจัดสรรหน่วยความจำแบบไดนามิกซึ่งเป็นสิ่งที่ไม่ค่อยเกิดขึ้นคือหน่วยความจำแบบไดนามิกอาจเติมเต็มหากโปรแกรมเมอร์ลืมตั้งค่าเวลา หากไม่มีการตั้งค่าเวลาซึ่งแตกต่างจากหน่วยความจำแบบสแตติกที่จะปล่อยหน่วยความจำในที่สุดหน่วยความจำแบบไดนามิกจะเก็บลงในข้อมูล หากโปรแกรมมีแอปพลิเคชันการถ่ายโอนข้อมูลขยะและส่วนใหญ่จะเปิดใช้งานหลังจากเวลาผ่านไประยะหนึ่งเพื่อล้างหน่วยความจำ มันเป็นแนวปฏิบัติที่ดีที่สุดในการตั้งค่าเวลาสำหรับการจัดสรรหน่วยความจำ


