Skip to main content

Phân bổ bộ nhớ động là gì?

Phân bổ bộ nhớ động, còn được gọi là phân bổ bộ nhớ dựa trên HEAP, là một loại quản lý bộ nhớ tương phản rõ rệt bởi phân bổ bộ nhớ tĩnh.Trong phân bổ bộ nhớ động, lập trình viên cho máy tính nói chính xác số lượng bộ nhớ phân bổ cho mỗi chương trình và thời gian giữ bộ nhớ.Điều này giải quyết nhiều vấn đề xảy ra trong phân bổ bộ nhớ tĩnh, chẳng hạn như lạm dụng bộ nhớ và các chương trình bị đình trệ.Mặc dù nó giải quyết được nhiều vấn đề, nếu lập trình viên quên nói với bộ nhớ, thì bộ nhớ động có thể trở thành một vấn đề. Các máy tính, theo mặc định, sử dụng phân bổ bộ nhớ tĩnh.Điều này có nghĩa là bộ nhớ giữ các chương trình khi chúng được sử dụng, ngay cả khi chương trình không còn được sử dụng hoặc nếu bộ nhớ được giữ trở nên nguy hiểm hoặc trở ngại cho hiệu suất.Ví dụ: nếu người dùng ngừng chạy một chương trình lấy 2 megabyte (MB) trên máy 3 MB và chương trình thứ hai cần 2 MB khác, chương trình thứ hai sẽ không hoạt động.Điều này là do không còn đủ bộ nhớ trong máy tính cho chương trình khác. Với phân bổ bộ nhớ tĩnh, người dùng hoặc lập trình viên không thể chỉ định lượng bộ nhớ mà anh ấy muốnBộ nhớ để giải phóng tài nguyên.Đây là lý do tại sao người dùng nâng cao thường sử dụng phân bổ bộ nhớ động.Lập trình viên có thể kiểm soát mọi thứ về bộ nhớ, bao gồm cả thời gian giữ tài nguyên. Ví dụ, lập trình viên có thể đặt phân bổ bộ nhớ động để chỉ giữ 1 MB hoặc ít hơn, sẽ lưu đủ bộ nhớ hệ thống để cho phép kháccác chương trình để mở.Điều này có thể được thực hiện bởi vì bộ nhớ tĩnh thường giữ mọi thứ về chương trình, trong khi bộ nhớ động cho phép các lập trình viên đặt nó ở giá trị thấp hơn chứa một số dữ liệu, nhưng không phải tất cả mọi thứ.Đồng thời, bộ nhớ tĩnh vẫn sẽ cần thiết và nó có thể được đặt trong lược đồ phân bổ này. Một vấn đề tiềm năng với phân bổ bộ nhớ động mdash;Một điều hiếm khi được chơi mdash;là bộ nhớ động có thể lấp đầy nếu lập trình viên quên đặt giá trị thời gian.Nếu không có giá trị thời gian được đặt, không giống như bộ nhớ tĩnh cuối cùng sẽ giải phóng bộ nhớ, bộ nhớ động sẽ giữ thông tin.Nếu chương trình có ứng dụng đổ rác và hầu hết làm, nó sẽ kích hoạt sau một khoảng thời gian nhất định để xóa bộ nhớ.Nó vẫn là cách thực hành tốt nhất để đặt giá trị thời gian cho phân bổ bộ nhớ.