Menu
CoddyTech

Bộ nhớ ngăn xếp và bộ nhớ heap

Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 31 trên 63.

Khi chương trình C chạy, nó sử dụng hai vùng bộ nhớ riêng biệt: ngăn xếp và heap. Hiểu rõ sự khác nhau giữa hai vùng bộ nhớ này rất quan trọng để lập trình C hiệu quả, đặc biệt khi làm việc với con trỏ và cấp phát bộ nhớ động.

stack dùng để cấp phát bộ nhớ tĩnh. Đây là nơi lưu trữ các biến cục bộ, tham số của hàm và thông tin về lời gọi hàm. Hệ thống tự động quản lý stack: khi bạn khai báo một biến cục bộ, bộ nhớ sẽ được cấp phát trên stack; khi biến nằm ngoài phạm vi, bộ nhớ đó sẽ tự động được giải phóng.

void function() {
    int x = 10;  // Được cấp phát trên ngăn xếp
    char arr[100];  // Cũng được cấp phát trên ngăn xếp
    // Bộ nhớ tự động được giải phóng khi hàm kết thúc
}

Heap được dùng để cấp phát bộ nhớ động. Đây là một vùng bộ nhớ lớn hơn mà bạn có thể yêu cầu trong khi chương trình chạy.

Khác với ngăn xếp, vùng nhớ heap cần được quản lý thủ công: bạn phải yêu cầu cấp phát bộ nhớ rõ ràng rồi giải phóng khi dùng xong. Cách này giúp bạn kiểm soát nhiều hơn nhưng cũng đi kèm với nhiều trách nhiệm hơn.

Điểm khác biệt chính nằm ở cách quản lý: bộ nhớ stack được quản lý tự động và có kích thước giới hạn, còn bộ nhớ heap được quản lý thủ công và lớn hơn nhiều. Trong các bài học tiếp theo, bạn sẽ học cách làm việc với bộ nhớ heap bằng các hàm như malloc() và free().

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online