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 :

Fuite mémoire cherche plombier


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut Fuite mémoire cherche plombier
    Bonjour à tous,

    Je suis confronté à un problème que je n'arrive pas à résoudre, je viens donc humblement vous demander votre aide.

    J'ai fait un programme (pour mon stage) évaluant des opérations logiques (avec des XOR/AND/OR...) d'arité (= nombre d'arguments pris par chaque opérateur) quelconque mais fixe (je veux dire que si j'évalue une fois avec une arité de 3, durant toute l'exécution l'arité sera de 3).

    J'utilise ce programme notamment dans des cas assez particuliers (des permutations circulaires de fonctions XOR, cela est en lien direct avec des réseaux d'automates ou des graphes ou chaque noeud vérifier une fonction XOR d'arité k si ça parle à certains...)

    Le fonctionnement du programme est le suivant:

    -Je lis les opérations souhaitées dans un fichier. les fichiers ont une syntaxe du type XOR ARG1 ARG2 ARG3
    -je les stocke dans une liste
    -je transfère la liste dans un arbre
    -j'évalue cet arbre (à k fils si k est l'arité)
    -je renvoie le résultat en l'écrivant dans un fichier texte

    J'utilise pour simuler mes noeuds (ou automates) des champs de bits (un int donc 32 bits, bien que je n'ai pas eu à aller au delà de 13 bits pour le moment).

    Mon problème est le suivant:
    Lors de l'exécution du programme, j'ai de nombreux malloc/calloc et free (pour générer mes listes, mes arbres...). Je m'efforce de faire un free pour chaque allocation, mais il semblerait que j'en oublie car valgrind m'indique que des bytes sont perdus ou encore alloués:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     HEAP SUMMARY:
    ==7508==     in use at exit: 27,525,120 bytes in 589,824 blocks
    ==7508==   total heap usage: 1,417,220 allocs, 827,396 frees, 61,211,724 bytes allocated
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LEAK SUMMARY:
    ==7508==    definitely lost: 1,572,856 bytes in 196,607 blocks
    ==7508==    indirectly lost: 25,950,584 bytes in 393,201 blocks
    ==7508==      possibly lost: 1,548 bytes in 14 blocks
    ==7508==    still reachable: 132 bytes in 2 blocks
    ==7508==         suppressed: 0 bytes in 0 blocks
    Toujours d'après valgrind, les bytes ont été alloués par ma fonction de création d'arbre appelée par ma fonction plaçant les valeurs d'une suite dans un arbre. J'ai fait une fonction de suppression d'un arbre qui, lorsque je l'exécute seule dans un fichier à part, semble bien libérer toute la mémoire (valgrind me dit que tout va bien).

    Je ne comprends donc pas d'où viennent ces bytes non libérés, et je viens vous demander votre aide à ce sujet.

    Ci joint mon code commenté, auquel j'ai supprimé les fonctions ne modifiant pas la mémoire. S'il n'est pas clair, je suis ouvert à toute remarque de structuration/présentation/commentaire, ça me fera progresser (c'est le but d'un stage non ?) et essaierai du mieux que je pourrai de vous aider à m'aider.

    Veuillez par ailleurs m'excuser pour toute faute d'orthographe, si je ne poste pas au bon endroit et si mon code est trop long/pas clair/mal fait. C'est la première fois que je demande de l'aide sur un forum, et également la première fois que j'ai à réaliser un "vrai" programme que quelqu'un d'autre devra comprendre et utiliser.


    Merci de votre aide !


    [EDIT]: bon et bien une fois de plus, compiler PUIS modifier le code n'est pas une bonne idée. il manque la fonction "evaluer" pour que le programme puisse marcher, je la rajoute donc bien qu'elle ne soit pas directement intéressante ici
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [tomcat][memoire] java.net.URL et fuite mémoire
    Par Seiya dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 09/03/2009, 10h41
  2. Cherche Plombier pour bonne fuite Mémoire!
    Par TNT89 dans le forum C++
    Réponses: 9
    Dernier message: 01/06/2008, 14h10
  3. [Fuites mémoire] Je cherche un utilitaire
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/02/2005, 10h03
  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