Stack และการเติบโต
Stack เป็นโครงสร้างข้อมูลเก็บองค์ประกอบ มี 2 การดำเนินการ: push (เพิ่ม) และ pop (ลบ) Stack สามารถเติบโตขึ้น (upward) หรือลง (downward) ขึ้นอยู่กับการใช้งานของโปรแกรม
อัลกอริทึม
- สร้างตัวแปรท้องถิ่น (local variable) ในฟังก์ชัน main
- สร้างฟังก์ชันที่มีตัวแปรท้องถิ่น
- เรียกฟังก์ชันจาก main แล้วเปรียบเทียบที่อยู่ของตัวแปรท้องถิ่นทั้งสอง
- ถ้าที่อยู่ใน main มากกว่าที่อยู่ในฟังก์ชัน → Stack เติบโตขึ้น (upward)
- ถ้าที่อยู่ใน main น้อยกว่า → Stack เติบโตลง (downward)
โค้ดภาษา C
#include <stdio.h>
void fun(int *main_local_addr) {
int fun_local;
if (main_local_addr < &fun_local)
printf("Stack grows upward\n");
else
printf("Stack grows downward\n");
}
int main() {
int main_local;
fun(&main_local);
return 0;
}ผลลัพธ์
Stack grows downward
บนระบบส่วนใหญ่ Stack จะเติบโตลง (ทิศทางที่อยู่หน่วยความจำลดลง)