Rust

Memory Management

Stack so với heap, allocator, Drop trait, RAII, rò rỉ bộ nhớ do chu trình Rc, Pin<T>

20 câu hỏi phỏng vấn·
Senior
1

Trong Rust, các biến cục bộ thuộc kiểu nguyên thủy như i32 hoặc bool được lưu trữ ở đâu?

Câu trả lời

Các biến cục bộ thuộc kiểu nguyên thủy được lưu trên stack. Stack cung cấp việc cấp phát và giải phóng rất nhanh vì nó hoạt động theo nguyên tắc LIFO (Last In, First Out). Các kiểu nguyên thủy có kích thước được biết tại thời điểm biên dịch, cho phép trình biên dịch dành sẵn không gian cần thiết trên stack frame của hàm hiện tại.

2

Nên dùng smart pointer nào để cấp phát một giá trị trên heap với một chủ sở hữu duy nhất?

Câu trả lời

Box<T> là smart pointer đơn giản nhất để cấp phát trên heap. Nó đảm bảo quyền sở hữu duy nhất và tự động giải phóng bộ nhớ khi Box ra khỏi scope. Box hữu ích cho các kiểu có kích thước không xác định tại thời điểm biên dịch, cho các cấu trúc lớn không muốn sao chép trên stack, hoặc cho các kiểu đệ quy.

3

Mẫu RAII (Resource Acquisition Is Initialization) trong Rust là gì?

Câu trả lời

RAII là một mẫu trong đó tài nguyên (bộ nhớ, tệp, kết nối) được thu nhận khi tạo đối tượng và được giải phóng tự động khi đối tượng bị hủy. Trong Rust, điều này được thực hiện thông qua trait Drop, được gọi tự động khi một giá trị ra khỏi scope. Mẫu này đảm bảo không có tài nguyên nào bị bỏ quên và ngăn chặn rò rỉ bộ nhớ.

4

Khi nào trait Drop được gọi tự động trong Rust?

5

Làm thế nào để tạo ra rò rỉ bộ nhớ (memory leak) với Rc<T> trong Rust?

+17 câu hỏi phỏng vấn

Nắm vững Rust cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí