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

 C++ Discussion :

Utiliser ou pas auto_ptr pour les cas simples?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Par défaut Utiliser ou pas auto_ptr pour les cas simples?
    Bonjour,

    Est ce que les développeurs expérimentés ici peuvent me dire si vous utilisez automatiquement les auto_ptr ou les smart pointer pour tous les pointeurs membres de l'objet.

    Je travaille dans un cas simple qui consiste à instancier l'objet membre et le supprime à la fin, les objets membres ne sont utilisés que par l'objet principal.

    C'est juste question d'habitude, est ce que vous évitez les new et delete systématiqument?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Si la méthode qui a créé l'objet lève une exception avant d'avoir appelé le delete, tu te retrouves avec une fuite de mémoire.
    Si tu as utilisé new/delete plutôt qu'auto_ptr.

    Si tu es certain que ton code n'est nullement susceptible de lever une exception, tu peux éventuellement te passer d'un auto_ptr...

  3. #3
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Euh perso je prefere eviter de les utiliser, j'aime bien gerer mes pointeur comme je l'entends et sa me permet de pouvoir les trinballer d'une classe a une autre, on sait jamais comment le code va evoluer au fur et a mesure du developpement.

    Edit: Lorsqu'une exception est lever, il est normal d'avoir des fuite de memoire (qui dit exception dit fermeture du programme donc liberation de la memoire)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par skeud Voir le message
    Euh perso je prefere eviter de les utiliser, j'aime bien gerer mes pointeur comme je l'entends
    Tu n'aurais pas commencé la prog par le C, par hasard ?

    Citation Envoyé par skeud Voir le message
    et ça me permet de pouvoir les trimballer d'une classe a une autre
    Il y a les shared_ptr, pour ça.

    Citation Envoyé par skeud Voir le message
    Edit: Lorsqu'une exception est lever, il est normal d'avoir des fuite de mémoire (qui dit exception dit fermeture du programme donc libération de la mémoire)
    C'est normal quand tu utilises new/delete. Avec les smart pointers, tu es assuré que les objets construits par l'instance courante sont "dépilés", et donc que leurs destructeurs sont appelés (ce qui n'est pas le cas de l'objet qui lève l'exception).

  5. #5
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Si justement j'ai commencer par le C, mais bon je me retrouve presque jamais a faire des new en c++ avec tout les super outils de ce langage.

    Je vois pas trop l'interet d'appeler le constructeur lors d'une exception, imaginons que sa soit une exception qui interfere avec la stack, tu risquerais de faire plus de degats en continuant un bout de ton code qu'en exitant de maniere pure et dur ^^

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par skeud Voir le message
    Je vois pas trop l'interêt d'appeler le constructeur lors d'une exception
    Effectivement, il n'y en a aucun. Je voulais écrire "destructeur" (corrigé).

    Citation Envoyé par skeud Voir le message
    imaginons que sa soit une exception qui interfère avec la stack, tu risquerais de faire plus de dégâts en continuant un bout de ton code
    Je ne vois pas trop à quoi tu penses...

    Citation Envoyé par skeud Voir le message
    qu'en exitant de manière pure et dur ^^
    De toute façon, quand j'excite, toute notion de pureté est assez lointaine.

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 612
    Par défaut
    qui dit exception dit fermeture du programme
    Ben non, l'intérêt d'une exception est justement de pouvoir la gérer plus haut et d'éviter de quitter le programme.

    Et les smart pointer permettent, entre autre, d'éviter les fuites mémoire lorsqu'une exception remonte la pile.
    Perso, bien que je n'aime pas trop les smart pointeurs (ils pètent l'auto complétion de visual ^^), je les conseils vivement.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2011, 01h19
  2. Réponses: 4
    Dernier message: 28/10/2007, 20h01
  3. Je ne peux pas poster pour les emplois
    Par Shugo78 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 7
    Dernier message: 03/05/2007, 12h02
  4. Réponses: 9
    Dernier message: 05/02/2007, 18h08

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