Junior — Middle
Quels sont les principaux défis ou pièges liés à l'utilisation de pointeurs intelligents en programmation?
sobes.tech IA
Réponse de l'IA
Les principales difficultés lors de l'utilisation des pointeurs intelligents:
- Références cycliques : si deux objets se possèdent mutuellement via
shared_ptr, ils ne seront jamais libérés, ce qui entraîne une fuite de mémoire. Pour y remédier, on utiliseweak_ptr. - Mauvaise utilisation de
unique_ptr: tenter de copier ununique_ptrentraînera une erreur, il faut utiliser le déplacement. - Surcharge des ressources : la création et la destruction fréquentes de pointeurs intelligents peuvent affecter les performances.
- Propriété non évidente : avec une conception incorrecte, il est difficile de comprendre qui possède l'objet et quand il sera détruit.
Exemple de référence cyclique :
struct B;
struct A {
std::shared_ptr<B> b_ptr;
};
struct B {
std::shared_ptr<A> a_ptr;
};
// Cela créera un cycle, les objets ne seront pas supprimés automatiquement.
Pour l'éviter, on utilise std::weak_ptr pour l'une des parties.