กอง - ตัวแปรทั้งหมดที่ประกาศภายในฟังก์ชันจะใช้หน่วยความจำจากสแต็ก ดังนั้น ตัวแปรโลคัลภายในฟังก์ชันจะอยู่บนสแต็ก
กอง − นี่คือหน่วยความจำที่ไม่ได้ใช้ของโปรแกรมและสามารถใช้เพื่อจัดสรรหน่วยความจำแบบไดนามิกเมื่อโปรแกรมทำงาน ดังนั้น หากเราต้องการให้บางสิ่งอยู่ได้นานกว่าฟังก์ชันที่ประกาศไว้ เราต้องจัดสรรมันในฮีป
ตัวอย่าง
int main() { int a; //get memory allocated on stack. int *ptr=new int[7]; //memory for 7 integers allocated on heap. }
ปัญหาหลักในหน่วยความจำฮีปคือการแตกแฟรกเมนต์ในขณะที่ปัญหาการขาดแคลนหน่วยความจำมีแนวโน้มในสแต็กมากกว่า ขนาดหน่วยความจำสามารถเปลี่ยนได้ในฮีปซึ่งไม่สามารถเปลี่ยนแปลงในสแต็กได้