Hi All,
Après une longue absence dans le forum de CS, me voici de retour avec, une fois n'est pas coutume, une petite question technique que je soumets à la communauté. Au sujet de ce billet: les
"smart pointers" (ou pointeurs intelligents).
Si j'ai bien compris les différentes docs trouvées ici et là (dont une source ici même), un smart pointer permet de ne plus s'occuper de la désallocation mémoire en se basant sur un système de références. Est-ce exact?
De plus, toujours si j'ai bien compris, le smart pointer permet de ne pas allouer plusieurs fois le même objet mais de créer simplement une référence sur cet objet à chaque "allocation". Toujours exact?
Ce qui veut dire que si je fais:
Objet * pObjet1 = new Objet(3,4);
Objet * pObjet2 = new Objet(3,4);
je n'ai pas 2 objets différents mais 2 pointeurs sur le même objet.
Voici mon cas de figure (éditeur d'objets 2D):
- j'ai un manager de polygones et un manager de points
- chaque polygon ne contient pas une liste de points mais une liste d'ID de ces points qui sont stockés dans le manager de points
- la modification d'un polygone peut se faire via le manger de polygones ou via l'objet lui-même
- pour retrouver mes petits dans ces managers, j'utilise des objets map (STL) en guise de tables d'indexation, avec tous les problèmes de mise à jour que cela suppose
- aucun new ni delete: tout est alloué statiquement au cours de la session de travail
Voici maintenant mes questions:
- avez-vous une doc détaillée sur les smart pointers ou bien un exemple d'utilisation?
- d'après la description de mon cas de figure (simpliste, je l'admets), me conseillez-vous de passer aux smarts pointers?
- y a-t-il une "bonne manière" de gérer mon cas de figure?
Merci d'avance pour votre aide...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage