Pages : 1
#1 Le 02/09/2007, à 10:04
- Le Barde
Les pointeurs intelligents
Bonjour à tous,
Étant relativement débutant en programmation C++, j'ouvre le débat. J'ai entendu parler tout récemment des pointeurs intelligents. Comme tout ceci m'intéresse, j'ai vu notamment cet article les concernant en partie également.
Il a l'air de ressortir de tout ceci qu'en C++, c'est vraiment primordial d'utiliser des pointeurs intelligents, à moins que l'on sache particulièrement ce que l'on fait.
Alors voici ma question : vous, développeurs, qui codez abondamment en C++, que pensez-vous de ceci ? Dois-je repenser complètement ma façon de programmer et ne plus utiliser que des pointeurs intelligents ? Et... utilisez-vous, justement, de tels pointeurs ?
À vous les studios.
Le Barde.
Hors ligne
#2 Le 02/09/2007, à 11:17
- ekra
Re : Les pointeurs intelligents
Bonjour,
Ceci est par exemple implémenté en Java. Un "garbage collector" compte les références vers une case mémoire et la libère automatiquement lorsqu'il n'y en a plus.
En C++ j'ai cru entendre il y a quelques temps que dans une prochaine norme, les compilateurs devaient gérer cela. Cependant je ne crois pas que de nos jours on puisse faire de new sans delete.
PTC !
GPG Key ID = 5518CFC7
Hors ligne
#3 Le 02/09/2007, à 17:30
- Link31
Re : Les pointeurs intelligents
Cependant je ne crois pas que de nos jours on puisse faire de new sans delete.
Si, avec les pointeurs intelligents justement.
@Le Barde : Ça ne coûte pas cher d'ajouter un delete au bon endroit pour chaque new. L'intérêt des pointeurs intelligents est surtout d'alléger le code (tout en permettant certaines constructions de code difficiles à faire autrement), et de faciliter le développement en évitant des erreurs bêtes. C'est probablement important en entreprise, où le temps pour terminer un projet est limité. Mais en tant que débutant, je pense que tu devrais d'abord t'habituer à prendre de bonnes habitudes avec les pointeurs normaux.
Hors ligne
#4 Le 02/09/2007, à 19:16
- scholi
Re : Les pointeurs intelligents
Perso je ne connais pas les pointeur intelligent, mais l'avantage des pointeurs normaux et que si ça plante tu te rends tout de suite compte qu'il y a une erreur de programmation.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#5 Le 02/09/2007, à 22:07
- Luc Hermitte
Re : Les pointeurs intelligents
Pas vraiment le bon forum pour une telle question, non ?
Les smart pointers amennent du déterminisme dans la libération des ressources. Et simplifient le partage et le transit des pointeurs.
Dans la prochaine norme, ils seront inclus dans la SL. Ce sont les pointeurs intelligents de boost qui ont servi de base à leur définition.
Le gros avantage par rapport aux delete explicites, c'est qu'ils nous évitent les codes spaghettis bouffés par les try-catch. On retrouve le même détail qui est au coeur du RAII.
Mais tout ça, on l'a déjà expliqué dans la FAQ, et Aurélien dans son article.
@scholi: soit ce que tu dis est faux, soit il manque des mots (et un 's'). Le déférencement d'un pointeur intelligent null déclenche souvent un assert ou une exception. Ce qui est bien plus simple pour détecter une erreur qu'un déférencement qui plante ou non le programme selon le bon vouloir de ton compilo, et de ta machine au moment où le déréférencement est réalisé.
@Link31: les bonnes habitudes c'est d'écrire du code robuste. Et en toute honnêteté, sans RAII, j'ai le plus grand mal pour y parvenir (merci les exceptions)
#6 Le 02/09/2007, à 22:10
- Luc Hermitte
Re : Les pointeurs intelligents
s/déférencement/déréférencement/
#7 Le 02/09/2007, à 22:24
- Le Barde
Re : Les pointeurs intelligents
Merci à vous pour vos réponses.
Oui, Luc, tout ça a déjà été dit dans la FAQ et l'article ; justement, ma question était réellement : "vous, développeurs, n'utilisez-vous plus que des pointeurs intelligents ?" question qui est sensiblement différente effectivement
Hors ligne
#8 Le 02/09/2007, à 22:35
- Link31
Re : Les pointeurs intelligents
@Link31: les bonnes habitudes c'est d'écrire du code robuste. Et en toute honnêteté, sans RAII, j'ai le plus grand mal pour y parvenir (merci les exceptions)
Il fallait lire : "prendre de bonnes habitudes avec les pointeurs normaux, tant que les pointeurs intelligents ne sont pas dans la norme".
Hors ligne
#9 Le 03/09/2007, à 08:58
- scholi
Re : Les pointeurs intelligents
s/déférencement/déréférencement/
éditer le post précédent c'est pas plus simple?
Sinon merci pour les précisions
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#10 Le 03/09/2007, à 17:54
- Link31
Re : Les pointeurs intelligents
éditer le post précédent c'est pas plus simple?
On ne peut pas lorsqu'on n'est pas inscrit.
Hors ligne
#11 Le 03/09/2007, à 18:55
- Le Barde
Re : Les pointeurs intelligents
Tout s'esseplique
Hors ligne
Pages : 1