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 :

valgrind fuite mémoire


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Par défaut valgrind fuite mémoire
    Bonjour à tous,

    J'ai exécuté mon programme avec valgrind pour détecter les fuites mémoires et j'ai le résultat ci dessous. Est ce que quelqu'un pourrait m'aider à le comprendre?
    Merci d'avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ==8246== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from 1)
    ==8246== malloc/free: in use at exit: 48 bytes in 4 blocks.
    ==8246== malloc/free: 14 allocs, 10 frees, 176 bytes allocated.
    ==8246== For counts of detected errors, rerun with: -v
    ==8246== searching for pointers to 4 not-freed blocks.
    ==8246== checked 167,776 bytes.
    ==8246== 
    ==8246== LEAK SUMMARY:
    ==8246==    definitely lost: 48 bytes in 4 blocks.
    ==8246==      possibly lost: 0 bytes in 0 blocks.
    ==8246==    still reachable: 0 bytes in 0 blocks.
    ==8246==         suppressed: 0 bytes in 0 blocks.
    ==8246== Rerun with --leak-check=full to see details of leaked memory.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Rerun with --leak-check=full

    il faut que tu relances avec cette option pour avoir le détail

  3. #3
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    En gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ==8246== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from 1)
    Bon point : valgrind n'a détecté aucune erreur mémoire (débordement de tableau, pointeur null, etc)

    ==8246== malloc/free: in use at exit: 48 bytes in 4 blocks.
    Mauvais point : à la sortie du programme, il restait des blocs utilisés, totalisant 48 octets.

    ==8246== malloc/free: 14 allocs, 10 frees, 176 bytes allocated.
    Sur 14 allocations, seules 10 ont été libérées. Au total, tu as alloué 176 bytes.

    La suite est un résumé de tout ça

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    mais valgrind détaille plus que cela, avec l'option --leak-check=full on sait de qu'elles classes il s'agit (si new) et la pile des appels ayant réaliser les allocations des blocks/instances perdus
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Moi ce que j'adore avec valgrind, c'est qu'il dit quoi faire:

    Dans le log du départ
    [quote]
    ==8246== For counts of detected errors, rerun with: -v
    [quote]

    Après il va dire, faites un check complet:
    --leak-check=full

    Et puis faut pensé à compiler le programme avec l'option -g ( pour avoir les informations de debugguage ). Ça aide pas mal aussi
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Par défaut
    Merci beaucoup pour vos aides.

  7. #7
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 80
    Par défaut
    J'ai exécuter avec l'option --leak-check=full et j'ai le résultat suivant (les parties en rouge sont celles que j'ai du mal à comprendre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ==7232== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from 1)
    ==7232== malloc/free: in use at exit: 48 bytes in 4 blocks.
    ==7232== malloc/free: 14 allocs, 10 frees, 176 bytes allocated.
    ==7232== For counts of detected errors, rerun with: -v
    ==7232== searching for pointers to 4 not-freed blocks.
    ==7232== checked 167,776 bytes.
    ==7232== 
    ==7232== 48 (8 direct, 40 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 3
    ==7232==    at 0x4C25F6C: operator new(unsigned long) (vg_replace_malloc.c:230)
    ==7232==    by 0x400B91: main (in /home/awabi/Bureau/proj/projet)
    ==7232== 
    ==7232== LEAK SUMMARY:
    ==7232==    definitely lost: 8 bytes in 1 blocks.
    ==7232==    indirectly lost: 40 bytes in 3 blocks.
    ==7232==      possibly lost: 0 bytes in 0 blocks.
    ==7232==    still reachable: 0 bytes in 0 blocks.
    ==7232==         suppressed: 0 bytes in 0 blocks.
    Merci d'avance

Discussions similaires

  1. Fuites mémoire avec valgrind sur un exemple simple
    Par Kazujoshi dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 03/11/2010, 01h56
  2. Détection de fuites mémoire avec Valgrind
    Par dj.motte dans le forum GTK+ avec C & C++
    Réponses: 25
    Dernier message: 22/11/2008, 08h49
  3. Fuite mémoire avec valgrind
    Par franchouze dans le forum C++
    Réponses: 3
    Dernier message: 05/06/2006, 16h47
  4. [SWT]SWT et fuite mémoire(ou pas)
    Par menuge dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/06/2004, 21h40
  5. [debug] fuites mémoires
    Par tmonjalo dans le forum C
    Réponses: 3
    Dernier message: 28/07/2003, 17h20

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