Tôi có nhiều đối tượng boost::shared_ptr<MyClass>
và tại một số thời điểm, tôi cố ý muốn delete
một số trong số đó giải phóng bộ nhớ. (Tôi biết tại thời điểm đó tôi sẽ không bao giờ cần các đối tượng được chỉ định tới MyClass
nữa.) Làm cách nào để tôi có thể thực hiện điều đó?Làm thế nào để cố ý xóa một tăng :: shared_ptr?
Tôi đoán bạn không thể chỉ gọi delete()
bằng con trỏ thô mà tôi nhận được với get()
.
Tôi đã nhìn thấy một hàm get_deleter(shared_ptr<T> const & p)
trong boost::shared_ptr
, nhưng tôi không chắc chắn cách sử dụng nó và cũng có thể nói thử nghiệm ngay bên cạnh nó. (Tôi nghĩ rằng tôi có Tăng 1,38.)
Có thể chỉ cần gán một ô trống mới boost::shared_ptr
cho biến? Điều đó sẽ vứt bỏ giá trị cũ và xóa nó.
NOOOOO: Không gọi xóa sau cuộc gọi để nhận(). Con trỏ thông minh vẫn có một bản sao và sẽ gọi xóa khi nó giải phóng đối tượng. –