Mam wiele obiektów boost::shared_ptr<MyClass>
iw pewnym momencie celowo chcę delete
niektóre z nich, aby zwolnić trochę pamięci. (W tym momencie wiem, że nigdy nie będę już potrzebował wskazywanych obiektów MyClass
). Jak mogę to zrobić?Jak celowo usunąć boost :: shared_ptr?
Domyślam się, że nie można po prostu zadzwonić pod numer delete()
za pomocą surowego wskaźnika, który otrzymałem z get()
.
Widziałem funkcją get_deleter(shared_ptr<T> const & p)
w boost::shared_ptr
, ale nie jestem pewien, jak go używać, a także mówi eksperymentalny tuż obok niego. (Myślę, że mam Boost 1.38.)
Może wystarczy przypisać nowy pusty boost::shared_ptr
do zmiennej? To powinno wyrzucić starą wartość i ją usunąć.
NOOOOO: Nie wywołuj delete po wywołaniu, aby uzyskać(). Inteligentny wskaźnik nadal ma kopię i wywoła ją, gdy zwalnia obiekt. –