Hiểu khác biệt giữa Stack và Heap (vùng nhớ).
Stack (Ngăn xếp)
- Cấu trúc dữ liệu tuyến tính.
- Bộ nhớ cấp phát khối liên tục (contiguous).
- Cấp phát/giải phóng tự động bởi compiler.
- Chi phí xây dựng/duy trì thấp.
- Dễ triển khai.
- Kích thước cố định → không linh hoạt.
- Nhược điểm: thiếu hụt bộ nhớ do size cố định.
- Nếu không đầy, bộ nhớ bị lãng phí.
- Truy cập phần tử nhanh.
- Locality of reference tuyệt vời.
Heap (Đống)
- Cấu trúc dữ liệu phân cấp (hierarchical).
- Bộ nhớ cấp phát ngẫu nhiên (random).
- Cấp phát/giải phóng thủ công bởi lập trình viên.
- Chi phí cao.
- Khó triển khai.
- Truy cập phần tử chậm hơn.
- Nhược điểm: phân mảnh bộ nhớ (fragmentation).
- Có thể resize (thay đổi kích thước).
- Do đó không lãng phí bộ nhớ.
- Locality of reference khá tốt.
Quy trình trong bộ nhớ chính:
