Stack là gì?
Stack (ngăn xếp) là cấu trúc dữ liệu lưu trữ phần tử với hai thao tác: push (thêm) và pop (lấy ra). Stack có thể tăng lên (upward) hoặc tăng xuống (downward) tùy kiến trúc.
Thuật toán
Bước 1: Tạo biến cục bộ trong main()
Bước 2: Tạo hàm có biến cục bộ
Bước 3: Gọi hàm từ main, so sánh địa chỉ hai biến cục bộ
Bước 4: Nếu địa chỉ biến main > địa chỉ biến hàm → stack tăng lên
Ngược lại → stack tăng xuống
Mã nguồn C
#include <stdio.h>
void fun(int *main_local_addr) {
int fun_local;
if (main_local_addr < &fun_local)
printf("Stack tăng lên (upward)\n");
else
printf("Stack tăng xuống (downward)\n");
}
int main() {
int main_local;
fun(&main_local);
return 0;
}
Kết quả
Stack tăng xuống (downward)
Trên hầu hết kiến trúc hiện đại (x86, x64), stack phát triển từ địa chỉ cao xuống thấp.