31/03/2026
3. Weak Pointer (std::weak_ptr)
Đây là "người bạn đồng hành" của shared_ptr. Nó trỏ đến đối tượng được quản lý bởi shared_ptr nhưng không làm tăng biến đếm tham chiếu.
Tại sao cần nó? Để giải quyết vấn đề Circular Reference (Tham chiếu vòng). Nếu hai đối tượng shared_ptr trỏ chéo lẫn nhau, chúng sẽ không bao giờ được giải phóng.
Cách dùng: Bạn không thể truy cập trực tiếp giá trị của weak_ptr. Bạn phải dùng hàm lock() để kiểm tra xem đối tượng còn tồn tại không và chuyển nó tạm thời thành shared_ptr.