Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/09/2007, à 11: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, à 12: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, à 18:30

Link31

Re : Les pointeurs intelligents

ekra a écrit :

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, à 20: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, à 23: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, à 23:10

Luc Hermitte

Re : Les pointeurs intelligents

s/déférencement/déréférencement/

#7 Le 02/09/2007, à 23: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 wink

Hors ligne

#8 Le 02/09/2007, à 23:35

Link31

Re : Les pointeurs intelligents

Luc Hermitte a écrit :

@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, à 09:58

scholi

Re : Les pointeurs intelligents

Luc Hermitte a écrit :

s/déférencement/déréférencement/

éditer le post précédent c'est pas plus simple? wink

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, à 18:54

Link31

Re : Les pointeurs intelligents

scholi a écrit :

éditer le post précédent c'est pas plus simple? wink

On ne peut pas lorsqu'on n'est pas inscrit.

Hors ligne

#11 Le 03/09/2007, à 19:55

Le Barde

Re : Les pointeurs intelligents

Tout s'esseplique tongue

Hors ligne