Bộ nhớ(Memory)
Các chương trình Rust có 3 vùng bộ nhớ nơi dữ liệu được lưu trữ:
- data memory(bộ nhớ dữ liệu) - Dành cho dữ liệu có kích thước cố định và tĩnh (tức là luôn có sẵn trong suốt vòng đời của chương trình).
Ví dụ như một đoạn text trong chương trình của bạn (ví dụ: "Hello World!"):
Các byte của đoạn text này chỉ được đọc từ một vị trí và do đó
có thể được lưu trữ trong khu vực này. Các trình biên dịch thực hiện
rất nhiều sự tối ưu hóa với loại dữ liệu này và
chúng thường được coi là sử dụng rất nhanh vì các vị trí đã được xác định và cố định.
- stack memory(bộ nhớ ngăn xếp) - Đối với dữ liệu được khai báo dưới dạng các biến trong một hàm.
Vị trí của bộ nhớ này không bao giờ thay đổi trong suốt thời gian của một lệnh gọi hàm; bởi vì
trình biên dịch này có thể tối ưu hóa phần code nên dữ liệu ngăn xếp được truy cập rất nhanh.
- heap memory(bộ nhớ heap) - Đối với dữ liệu được tạo trong khi ứng dụng đang chạy.
Dữ liệu trong khu vực này có thể được thêm, di chuyển, xóa, thay đổi kích thước, v.v.
Do tính chất động của nó, nó thường được coi là sử dụng chậm hơn,
nhưng nó cho phép sử dụng bộ nhớ sáng tạo hơn nhiều. Khi dữ liệu được thêm vào vùng này, chúng tôi
gọi nó là phân bổ(allocation). Khi dữ liệu bị xóa khỏi phần này,
chúng tôi gọi nó là thu hồi(deallocation).