Sobes.tech
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 utilise weak_ptr.
  • Mauvaise utilisation de unique_ptr : tenter de copier un unique_ptr entraî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.