Comment faire pour supprimer intentionnellement un boost::shared_ptr?

J'ai beaucoup de boost::shared_ptr<MyClass> objets, et à un certain moment, j'ai volontairement voulez delete certains d'entre eux pour libérer de la mémoire. (Je sais à ce moment que j'ai n'auront jamais besoin de la pointe-à MyClass plus des objets.) Comment puis-je le faire?

Je suppose que vous ne pouvez pas simplement appeler delete() avec le pointeur brut que je reçois avec get().

J'ai vu une fonction get_deleter(shared_ptr<T> const & p) dans boost::shared_ptr, mais je ne suis pas sûr de la façon de l'utiliser, et aussi il est dit expérimentale juste à côté d'elle. (Je pense que j'ai Boost 1.38.)

Peut-être juste d'attribuer un nouveau vide boost::shared_ptr à la variable? Qui devrait jeter les vieux de la valeur et de le supprimer.

  • NOOOOO: N'appelez pas supprimer après un appel à get(). Le pointeur intelligent a toujours une copie et téléphoner à supprimer lors de la parution de l'objet.
InformationsquelleAutor Frank | 2009-03-07