Je pense que tu te méprends sur weak_ptr. Lorsque tu fais un lock, tu obtiens un shared_ptr. Si ce shared_ptr est valide, cela veut dire que le premier shared_ptr (le propriétaire) n'a pas encore détruit l'objet. Et s'il souhaite ensuite le détruire, tu as un shared_ptr dessus, tu as donc la garantie que l'objet ne sera pas détruit tant que tu conserves ce shared_ptr.
En bref, tu es sens utiliser un weak comme ca :
Ce code est safe en termes mémoire. Il n'y a pas d’équivalent safe avec une autre approche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void f() { auto sp = wp.lock(); if(sp) { // ici, tu utilises ton objet et tu es sur qu'il ne sera pas détruit pendant son utilisation } else { // l'objet est détruit, tu ne peux pas l'utiliser. Il faut créer un nouvel objet } }
Partager