Contenu du cours
Pointeurs Intelligents C++
Pointeurs Intelligents C++
Introduction aux Pointeurs Faibles
Le pointeur intelligent std::weak_ptr
ne possède pas l'objet auquel il pointe. Cela signifie essentiellement qu'un pointeur faible n'augmente pas le compteur de références de l'objet.
Un std::weak_ptr
permet d'accéder à un objet géré par des pointeurs partagés sans prolonger sa durée de vie. Si tous les pointeurs partagés sortent de la portée, l'objet est supprimé, même si un pointeur faible existe toujours. Cela est utile pour observer des objets partagés sans empêcher leur désallocation.
main
#include <iostream> #include <memory> struct Resource { Resource() { std::cout << "Resource created\n"; } ~Resource() { std::cout << "Resource destroyed\n"; } }; int main() { std::shared_ptr<Resource> sp1 = std::make_shared<Resource>(); std::weak_ptr<Resource> wp = sp1; // Weak pointer does not increase ref count std::cout << "Shared pointer going out of scope...\n"; sp1.reset(); // Resource is deleted if (wp.expired()) std::cout << "Resource no longer exists\n"; }
Le cycle de vie d'un pointeur faible
Les pointeurs faibles sont des observateurs qui peuvent accéder à un objet mais n'étendent pas sa durée de vie.
Leur cycle de vie dépend des pointeurs partagés. Lorsque le dernier pointeur partagé est détruit, l'objet est désalloué, et le pointeur faible expire. Il existe toujours mais devient vide.
Merci pour vos commentaires !