Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การใช้งาน Stack และ Heap อย่างถูกต้องใน C++

Stack - ตัวแปรที่ประกาศภายในฟังก์ชันจะใช้หน่วยความจำจาก Stack ดังนั้น ตัวแปรท้องถิ่น (local variable) ภายในฟังก์ชันจะอยู่บน Stack

Heap - หน่วยความจำที่ยังไม่ได้ใช้ของโปรแกรม และสามารถใช้จัดสรรหน่วยความจำแบบไดนามิกขณะรันโปรแกรม ดังนั้น หากเราต้องการให้สิ่งใดมีอายุยาวกว่าฟังก์ชันที่ประกาศมัน เราต้องจัดสรรบน Heap

ตัวอย่างโค้ด

int main() {
    int a; // จองหน่วยความจำบน stack
    int *ptr = new int[7]; // จองหน่วยความจำสำหรับ 7 integers บน heap
}

ปัญหาหลักของหน่วยความจำ Heap คือการแยกส่วน (fragmentation) ในขณะที่ปัญหาขาดหน่วยความจำมักพบบน Stack ขนาดหน่วยความจำบน Heap สามารถเปลี่ยนแปลงได้ แต่ Stack ไม่สามารถเปลี่ยนแปลงได้