Smart pointer trong C++ là con trỏ thông minh giúp quản lý bộ nhớ tự động, ngăn ngừa rò rỉ bộ nhớ. Có ba loại chính:
1. std::unique_ptr:
- Chỉ sở hữu một tài nguyên duy nhất, không cho phép sao chép, chỉ cho phép di chuyển. Khi ra khỏi phạm vi, nó tự động giải phóng bộ nhớ.
- Ưu điểm: Hiệu suất cao, đơn giản.
- Nhược điểm: Không thể chia sẻ quyền sở hữu.
2. std::shared_ptr:
- Cho phép nhiều shared_ptr cùng sở hữu một đối tượng, sử dụng bộ đếm tham chiếu để theo dõi số lượng con trỏ.
- Ưu điểm: Linh hoạt trong việc chia sẻ tài nguyên.
- Nhược điểm: Có overhead do quản lý bộ đếm tham chiếu.
3. std::weak_ptr:
- Không sở hữu tài nguyên, chỉ tham chiếu đến đối tượng được quản lý bởi shared_ptr mà không làm tăng bộ đếm tham chiếu.
- Ưu điểm: Ngăn ngừa vòng lặp tham chiếu.
- Nhược điểm: Không thể truy cập trực tiếp vào đối tượng nếu nó đã bị giải phóng.