Tengo muchos objetos boost::shared_ptr<MyClass>
, y en algún momento intencionalmente quiero delete
algunos de ellos para liberar algo de memoria. (Sé que en ese momento ya no necesitaré los objetos apuntados a MyClass
). ¿Cómo puedo hacer eso?Cómo eliminar intencionalmente un impulso :: shared_ptr?
Supongo que no puede simplemente llamar al delete()
con el puntero sin procesar que obtengo con get()
.
que he visto en una función get_deleter(shared_ptr<T> const & p)
boost::shared_ptr
, pero no estoy seguro de cómo usarlo, y también se dice experimental justo al lado de ella. (Creo que tengo Boost 1.38.)
¿Tal vez simplemente asigne un nuevo boost::shared_ptr
vacío a la variable? Eso debería descartar el valor anterior y eliminarlo.
NOOOOO: No llame a eliminar después de una llamada a get(). El puntero inteligente todavía tiene una copia y llamará a eliminar cuando libere el objeto. –