Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Sự khác biệt giữa Stack và Heap


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:

Sự khác biệt giữa Stack và Heap