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++

  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
    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 ?

  5. #5
    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 ?

  6. #6
    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 ?

  7. #7
    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).

  8. #8
    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)

  9. #9
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    Si tu utilises des biblioth�ques, assures toi qu'il n'y en a pas une qui ne d�salloue pas des donn�es "de base" parcequ'elle part du principe qu'une fois initializ�e elle ne peut �tre d�truite qu'a la fin du programme, alors autant "laisser faire l'OS"...

    J'ai vu �a plusieurs fois, mais heureusement il y a toujours eu des patchs pour corriger de tels biblioth�ques pour permettre de quitter l'application de mani�re propre.

  10. #10
    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
    En fait le probl�me venait du fait que mon programme "boite de dialogue" se terminait, et donc faisait le diagnostique de la memoire, avant que la dll soit decharg�e.

    Du coup toutes les variables de la dll ne semblait pas desalouees. Je pense qu'elles devaient l'etre mais je n'en suis pas certain et je n'aime pas voir des messages d'erreur memoire dans l'IDE. (Peut etre que j'aurais pu passer outre, mais je ne trouve pas ca propre ni rassurant).

    J'ai donc revu l'utilisation de la dll (c'est l'avantage quand on fait tout !) et le probleme semble resolu.

+ 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