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 :

Vector de structure contenant des string


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Par défaut Vector de structure contenant des string
    J'ai crée une structure qui contient des std::string pour stocker quelques chaines.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    struct MaStruct {
        std::string String1;
    };
    Dans mon programme j'utilise un vector de cette structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector<MaStruct> list;
    Lorsque mon programme se termine il détecte des fuites de mémoires. Les string étant des objets ne devraient-elles pas se détruire toutes seules ? De même pour le vector ?

    Merci de vos lumières.

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Lorsque mon programme se termine il détecte des fuites de mémoires
    Qui est 'il' ? Est-ce ton programme ? Il faudra que tu m'expliques comment il fait pour détecter ses propres fuites de mémoire, je veux bien la recette :p
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre expérimenté
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Qui est il ? Ton programme ? Il faudra que tu m'expliques comment il fait pour détecter ses propres fuites de mémoire.
    Pardon, je me suis en effet mal exprimé: c'est l'IDE (Visual Studio 2008) qui me détecte des fuites de mémoire à la sortie du programme.

  4. #4
    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
    Par défaut
    Citation Envoyé par Nicolas Bauland Voir le message
    Pardon, je me suis en effet mal exprimé: c'est l'IDE (Visual Studio 2008) qui me détecte des fuites de mémoire à la sortie du programme.
    Tu as des MFC ?

  5. #5
    Membre expérimenté
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Tu as des MFC ?
    En fait je travaille avec une dll win32 (là où réside mon vecto de string) dans un programme MFC (Boite de dialogue toute bete).

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Aurais tu moyen de passer ton programme par un coup de purify (ou un autre équivalent) pour tester s'il y a vraiment fuite de mémoire ?
    Car si tu utilise le RAII (tes classes sont RAII-sante ou utilise des objets respectant le RAII) , je ne vois pas comment tu pourrais avoir des fuites de mémoire.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  7. #7
    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
    Par défaut
    Salut,
    Il est peu probable que ta fuite mémoire vienne des string ou des std::vector sauf à avoir un implémentation exotique de la STL qui aurait des bugs. Mais si tu utilises des compilateurs habituels (gcc, visual, icc, etc.), ce cas est vraiment peu probable.
    Les premières choses à vérifier sont tes propres allocations ou celles de bibliothèques tierces moins répandues et donc susceptibles d'avoir des bugs.
    La question un peu maladroite de David est intéressante : comment sais-tu que tu as des fuites mémoires ? Peut-être est-ce le diagnostique qui est trop hâtif ?

  8. #8
    Membre expérimenté
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Il est peu probable que ta fuite mémoire vienne des string ou des std::vector sauf à avoir un implémentation exotique de la STL qui aurait des bugs. Mais si tu utilises des compilateurs habituels (gcc, visual, icc, etc.), ce cas est vraiment peu probable.
    Donc, on est bien d'accord qu'à priori, cela ne vient ni des string ni des vector (surtout que pour l'instant je n'ai pas de new dans mon programme).

    La question un peu maladroite de David est intéressante : comment sais-tu que tu as des fuites mémoires ? Peut-être est-ce le diagnostique qui est trop hâtif ?
    Lorsque j'execute mon programme dans l'IDE, il m'indique une fuite memoire à la sortie de celui-ci. Ce qui est étrange, et ce pourquoi j'ai posé la question, est que la mémoire perdue semble contenir des chaines de caractéres contenue dans les string.

    Comme j'utilise des variables globales, peut-etre le diagnostique se fait-il avant la libération de celle ci ?

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

Discussions similaires

  1. ArrayList contenant des String[]
    Par disciplined dans le forum C#
    Réponses: 6
    Dernier message: 28/02/2010, 20h45
  2. Lecture/affichage d'un fichier contenant des string
    Par Khaoula.85 dans le forum Visual C++
    Réponses: 4
    Dernier message: 02/12/2009, 11h13
  3. Réponses: 10
    Dernier message: 10/10/2009, 18h39
  4. Dupliquer une structure contenant des mutables
    Par bumbolol dans le forum Caml
    Réponses: 6
    Dernier message: 28/01/2009, 21h37
  5. Problème avec un switch contenant des strings
    Par dessinateurttuyen dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h56

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