Bộ nhớ động
Bộ nhớ động đề cập đến phần bộ nhớ của máy tính được cấp phát hoặc giải phóng trong quá trình thực thi chương trình, trái ngược với bộ nhớ tĩnh được cấp phát tại thời điểm biên dịch. Bộ nhớ này thường được quản lý trên heap.
Quản lý bộ nhớ động hiệu quả là rất quan trọng để xây dựng các phần mềm có khả năng mở rộng và hiệu quả. Nó cho phép các chương trình xử lý các cấu trúc dữ liệu và khối lượng công việc có kích thước không thể đoán trước mà không cần phải cấp phát trước một lượng bộ nhớ cố định, có khả năng lãng phí.
Khi một chương trình cần bộ nhớ trong thời gian chạy, nó sẽ yêu cầu một khối bộ nhớ từ hệ điều hành hoặc trình quản lý bộ nhớ. Quá trình này liên quan đến các con trỏ, là các biến lưu trữ địa chỉ bộ nhớ. Lập trình viên chịu trách nhiệm giải phóng bộ nhớ này một cách rõ ràng khi nó không còn cần thiết để ngăn ngừa rò rỉ bộ nhớ.
Bộ nhớ động là nền tảng để triển khai các cấu trúc dữ liệu phức tạp như danh sách liên kết, cây và đồ thị. Nó cũng được sử dụng rộng rãi trong các ứng dụng web để xử lý các tệp do người dùng tải lên hoặc các tải trọng dữ liệu lớn, có độ dài thay đổi.
Các lợi ích chính bao gồm tính linh hoạt, cho phép chương trình thích ứng với các kích thước đầu vào khác nhau, và sử dụng tài nguyên hiệu quả bằng cách chỉ tiêu thụ bộ nhớ khi thực sự cần thiết.
Các thách thức chính bao gồm rò rỉ bộ nhớ (không giải phóng bộ nhớ), phân mảnh (bộ nhớ bị chia thành các khối nhỏ không thể sử dụng được), và nguy cơ tràn bộ đệm nếu các ranh giới bộ nhớ không được tôn trọng nghiêm ngặt.
Các khái niệm liên quan bao gồm bộ nhớ tĩnh, bộ nhớ stack, thu gom rác (garbage collection) và rò rỉ bộ nhớ. Hiểu sự khác biệt giữa các khái niệm này là chìa khóa để phát triển phần mềm mạnh mẽ.