IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

attributs partagés: les shared pointers sont la solutions?


Sujet :

Boost C++

  1. #21
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Les shared_ptr, lourds? Je peux te garantir que grâce à eux mon code n'a jamais été aussi léger! Toute la gestion de la mémoire est passée à ce genre d"engins fort sympathiques !
    En ce qui concerne l'écriture pure, un bon typedef et le tour est joué.

    En C++, il faut être préparé à avoir un code qui baigne dans les exceptions, ne serait-ce qu'à partir du moment où tu écris un "new". Les fonctions standard lèvent des exceptions, les conteneurs standards aussi, beaucoup de bibliothèques bien écrites aussi.
    Bref, y'en a partout !
    Le RAII (merci les shared_ptr), c'est se mettre à l'abri des fuites, des double delete, ou bien de violation d'accès mémoire!

  2. #22
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    je vais m' y mettre de toute façon , si tout le monde le dit il y a bien une bonne raison pour ça , adieu *ptr alors so nostalgique

  3. #23
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Au final, tu développeras plus vite, et de manière plus sûre. Tu en seras content toi aussi.
    Je ne peux que te conseiller de lire Exceptionnal C++ de Herb Sutter (et l'autre volet More Exceptional C++).
    Il y a aussi http://www.gotw.ca/gotw/. Là c'est d'auto_ptr qu'il est question pour résoudre les problèmes, mais il pose quelques problèmes, surtout pour les débutants. Alors que shared_ptr, tu ne peux pas mal l'utiliser...

  4. #24
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Comme l'a dit Loïc précédemment, il n'y a pas que la sémantique de partage dans les pointeurs intelligents. Il faut plutôt comprendre et utiliser le bon pointeur intelligent plutôt que de mettre des shared_ptr partout.
    Quelques lectures :
    Gérer ses ressources de manière robuste en C++, par Aurélien Regat-Barrel qui présente le principe du RAII sous-jacent aux pointeurs intelligents.
    Les pointeurs intelligents de Loïc Joly, un bel article qui reprend la problématique, présente une solution 'maison' pour comprendre le mécanisme puis rentre dans les pointeurs intelligents du futur standard.
    Boost.SmartPtr : les pointeurs intelligents de Boost, par Matthieu Brucher. Tout est dans le titre.

    La F.A.Q. mérite aussi quelques instants pour consulter les items concernant le RAII ou les pointeurs intelligents.

  5. #25
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Comme l'a dit Loïc précédemment, il n'y a pas que la sémantique de partage dans les pointeurs intelligents. Il faut plutôt comprendre et utiliser le bon pointeur intelligent plutôt que de mettre des shared_ptr partout.
    Quelques lectures :
    Gérer ses ressources de manière robuste en C++, par Aurélien Regat-Barrel qui présente le principe du RAII sous-jacent aux pointeurs intelligents.
    Les pointeurs intelligents de Loïc Joly, un bel article qui reprend la problématique, présente une solution 'maison' pour comprendre le mécanisme puis rentre dans les pointeurs intelligents du futur standard.
    Boost.SmartPtr : les pointeurs intelligents de Boost, par Matthieu Brucher. Tout est dans le titre.

    La F.A.Q. mérite aussi quelques instants pour consulter les items concernant le RAII ou les pointeurs intelligents.
    Merci pour les liens.

    En lisant l'article de loic, j'ai découvert qu'il était tout de même possible d'avoir des memory leaks via l'utilisation des shared_ptr section - Risque de fuite mémoire : Cycle.

  6. #26
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    En lisant l'article de loic, j'ai découvert qu'il était tout de même possible d'avoir des memory leaks via l'utilisation des shared_ptr section - Risque de fuite mémoire : Cycle.
    En, effet, mais ces risques sont liés à l'architecture du programme, et il est donc facile de les corriger globalement.
    Avec des pointeurs nus, les risques sont présents à chaque utilisation des pointeurs, diffusés dans tout le code, et demandent parfois des efforts héroïques dans l'écriture du code pour être éliminés (surtout pour être exception safe).
    Avec un garbage collector, les risques sont encore plus faibles, mais on perd la destruction déterministe, ce qui est souvent un problème pour toute ressource autre que la mémoire.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2015, 09h31
  2. jointures dont les 2 membres sont des select
    Par rémi_tounul dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 26/04/2005, 14h56
  3. [VB6]Enumérer les attributs et les méthodes d'une classe
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/05/2004, 18h34
  4. Est-ce que les fichiers .obj sont tous les mêmes?
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 30/12/2003, 21h04
  5. Les Langages ne sont pas tous les mêmes ......
    Par Max Payne dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/08/2003, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo