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

Sử dụng stack và heap đúng cách trong C++?

Stack - Tất cả biến khai báo bên trong hàm sẽ chiếm bộ nhớ từ stack. Do đó, bất kỳ biến cục bộ nào trong hàm đều nằm trên stack.

Heap - Đây là bộ nhớ chưa sử dụng của chương trình và có thể dùng để cấp phát bộ nhớ động khi chương trình chạy. Vì vậy, nếu muốn thứ gì đó sống lâu hơn hàm khai báo nó, ta phải cấp phát nó trên heap.

Ví dụ

int main() {
  int a; // cấp phát bộ nhớ trên stack.
  int *ptr = new int[7]; // bộ nhớ cho 7 số nguyên cấp phát trên heap.
}

Vấn đề chính của bộ nhớ heap là phân mảnh (fragmentation) trong khi thiếu bộ nhớ thường thấy hơn ở stack. Kích thước bộ nhớ có thể thay đổi trong heap nhưng không thể trong stack.