Bonjour,
Comment libérer la mémoire d'un vecteur de pointeurs intelligents ?
Je fais ça mais, mais ça me fait un segfault :
Mercifor(vector<shared_ptr<CDynamic> >::iterator i = VObjet.begin(); i != VObjet.end(); ++i)
VObjet.erase(i);
Bonjour,
Comment libérer la mémoire d'un vecteur de pointeurs intelligents ?
Je fais ça mais, mais ça me fait un segfault :
Mercifor(vector<shared_ptr<CDynamic> >::iterator i = VObjet.begin(); i != VObjet.end(); ++i)
VObjet.erase(i);
Merci, je me disais que seul le vecteur serait libéré avec clear, mais en fait les destructeurs sont appelés si ce sont des objets, donc ça marchera avec des pointeurs intel, merci.
sauf qu'avec shared_ptr, la responsabilité est partagé, c'est à dire que vector n'est pas le propriétaire unique des objets. Appeler clear ne va pas forcement libérer les objets, mais uniquement ceux qui ne sont plus utilisés autre part
Si tu veux "imposer" que vector soit le seul propriétaire des objets (c'est à dire qu'il serait illégale que l'on utilise encore tes objets s'ils n'existent plus dans vector), alors il faut utiliser unique_ptr
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager