Les pointeurs intelligents C++ avec Qt

Publié dans C / C++ | Marqué avec , , ,
Share

J’entends parler de pointeurs intelligents (ou smart pointers) en C++ depuis pas mal de temps. N’étant pas encore tout à fait à l’aise avec cette notion, je me suis fait une petit séance d’état de l’art. Je compte utiliser des shared pointers tout bientôt, ce qui devrait me permettre d’acquérir d’avantage d’expérience sur le sujet.

Oh le joli pointeur intelligent !

Oh le joli pointeur intelligent !

L’idée qui se cache derrière, c’est de faciliter la gestion mémoire, et d’éviter les fuites mémoires par la même occasion. Je ne sais pas quand l’idée est apparue, mais pour bien comprendre l’état actuel de ce domaine, il faut savoir que les premières implémentations n’ont pas tout de suite été disponibles nativement dans le langage C++. La librairie Boost propose différentes sortes de pointeurs intelligents, tout comme le framework Qt. Il en existe d’autres bien assurément.
Je crois qu’aujourd’hui depuis C++11 (??? à vérifier), trois types de smart pointers sont disponibles nativement.

Ce qui m’intéresse, c’est surtout la version Qt puisque c’est le framework que j’utilise dans mes projets. A terme j’espère avoir l’occasion d’approfondir le sujet sur l’implémentation native, mais pour l’instant ça me permettra de me faire la main tranquillement.

Quelques articles intéressants sur le sujet (surtout version Qt) :

  • [C++/Qt] Performance de l’utilisation de QSharedPointer. Oh le bel article ! Très intéressant ! Il présente rapidement les différents types de pointeurs intelligents proposés par Qt, puis s’attarde longuement sur les QSharedPointer, sans oublier de faire un point sur les performances. Mon avis sur le sujet, il ne faut pas forcément utiliser les smart pointers à tout va puisque c’est légèrement plus lent qu’un pointeur C, mais s’il y a une seule bonne raison de les utiliser : il faut y aller ! ça vaut le coup.
  • (Not so much) Fun with QSharedPointer. Moralité : ne pas utiliser en même temps deux systèmes de gestion mémoire. Par exemple : gestion mémoire à l’aide de parent / enfant en Qt + gestion mémoire avec des QSharedPointer = aïe !
  • Developpez.com – Qt et les pointeurs intelligents (fr)

Un petit peu de documentation pure et dure :

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*