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

SL & STL C++ Discussion :

std::auto_ptr et delete[]


Sujet :

SL & STL C++

  1. #1
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut std::auto_ptr et delete[]
    Bonjour à tous,

    les auto_ptr se chargent de libérer la mémoire associée au pointeur qui leur a été confié, ce qui est tout à leur honneur. Mais qu'en est-il dans le cas suivant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    auto_ptr< int > ap( new int[ 5 ] );

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Comportement indéfini, puisque cela va appeler delete sur un tableau. std::auto_ptr n'est adapté qu'aux objets, pour les tableaux c'est std::vector.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<int> ap(5);

  3. #3
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Pour l'auto_ptr, c'est un peu ce que je craignais. Bon, ce n'est pas bien grave, mais merci pour la confirmation. Je vais peut-être me bricoler un autoArrayPtr, pour la forme 8)

    En ce qui concerne le vector, l'équivalence n'est tout de même pas parfaite puisque la libération de la mémoire allouée aux pointeurs n'est pas prise en charge, je crois.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pour l'auto_ptr, c'est un peu ce que je craignais. Bon, ce n'est pas bien grave, mais merci pour la confirmation. Je vais peut-être me bricoler un autoArrayPtr, pour la forme
    Ce serait à peu près inutile. Au pire tu as toujours boost::shared_ptr, pour lequel tu peux spécifier la méthode de destruction. Mais ce ne sera pas adapté aux tableaux (pas de redimensionnement, ajout, ...).

    En ce qui concerne le vector, l'équivalence n'est tout de même pas parfaite puisque la libération de la mémoire allouée aux pointeurs n'est pas prise en charge, je crois
    Bien sûr que si, c'est le principal intérêt.

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    En ce qui concerne le vector, l'équivalence n'est tout de même pas parfaite puisque la libération de la mémoire allouée aux pointeurs n'est pas prise en charge, je crois
    Bien sûr que si, c'est le principal intérêt.
    Ha oui, pardon. J'étais resté sur mes histoires de pointeurs et j'avais zappé le int du vector. Une petite pause s'impose...

    Quant à boost, j'aimerais bien tester ne serait-ce que leurs classes pour les regex. Mais là où je suis, ils n'utilisent même pas la STL. Préfèrent les conteneurs de Micro$oft. Alors...

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    ???????? Pardon ?
    Tu utilises quel compilateur pour raconter des trucs comme ça ?
    Boost n'utilise que le standard du C++, donc la STL. Je les vois mal utiliser l'implémentation de Microsoft de la STL pour GCC...

  7. #7
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Je pense qu'il veut parler des conteneurs des MFC : CMap, CArray, CList, etc..

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Je suppose également que le "ils" ne désignait pas les auteurs de boost, mais les collègues/supérieurs de Herode...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Voui. La phrase était mal tournée, autant pour moi...

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ou j'aurai dû mieux lire
    En plus, si ça se trouve, les CLists et autres sont basés sur les conteneur STLs de Microsoft, non ?

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Aucune chance.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    En effet. Les interfaces et la structure ne sont pas du tout les mêmes. Planquer la STL sous une couche aussi... épaisse, ça relèverait de la perversion 8)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. std::list remove & delete
    Par Goundy dans le forum SL & STL
    Réponses: 1
    Dernier message: 25/12/2008, 13h06
  2. [c++ --> java] std::auto_ptr<>
    Par nayaphykit dans le forum SL & STL
    Réponses: 5
    Dernier message: 31/03/2008, 17h04
  3. [c++ --> java] std::auto_ptr<>
    Par nayaphykit dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2008, 15h17
  4. [debutant] std::auto_ptr<>
    Par Meno dans le forum SL & STL
    Réponses: 8
    Dernier message: 26/10/2005, 10h27

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