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 :

correction de fuite de memoire


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut correction de fuite de memoire
    Bonjour,
    je ne sais pas si je poste au bon endroi mais j'aimerai connaitre le nom de quelques freeware permettant de reperer les fuites memoires d'un programme C.

    Merci!!

  2. #2
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 787
    Points
    1 787
    Par défaut
    Moi j'utilise cette technique(pas top, mais on peu deja voir si on a une fuite)
    si tu est sous linux sous KDE tu peu faire CTRL + ESC ou sous Windows 2000 et XP tu fait CTRL + ALT + SUPPR et tu va dans l'onglet processu. Si tu as une fuite de mémoire ton programme dans la liste des processus à sa mémoire utilisée qui augmente.
    Je sais c'est pas super mais ça ma permi de resoudre quelques problémes de ce genre. Il suffit de désactiver ensuite une à une les parties de ton programme pour voir d'ou viens la fuite.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    En fait, en regle general, je declare un compteur en global et je fais ++ a chaque malloc et -- a chaque free. Puis j'affiche le resultat...
    C'est assez efficace.
    Sinon, je rajoute:
    a la fin du main .
    Et, en meme temps je fais un top pour voir ce qu'il reste a la fin...
    ca marche bien aussi.
    Mais la, je sais que j'ai enorme de fuite partout et j'ai pas super envie de me les resoudre a la main... donc un pitit soft serai le bienvenu!!!
    Merci !!

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par vince3320
    En fait, en regle general, je declare un compteur en global et je fais ++ a chaque malloc et -- a chaque free. Puis j'affiche le resultat...
    C'est assez efficace.
    Sinon, je rajoute:
    a la fin du main .
    Et, en meme temps je fais un top pour voir ce qu'il reste a la fin...
    ca marche bien aussi.
    Mais la, je sais que j'ai enorme de fuite partout et j'ai pas super envie de me les resoudre a la main... donc un pitit soft serai le bienvenu!!!
    Merci !!
    Au lieu d'un while(1) qui va te bouffer toutes tes ressource fais un pause() sous linux ... (ctrl^C pour fermer le programme ensuite).

    allez puisque la recherche c'est pas ton fort visiblement :
    valgrind

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par vince3320
    En fait, en regle general, je declare un compteur en global et je fais ++ a chaque malloc et -- a chaque free. Puis j'affiche le resultat...
    C'est assez efficace.
    Mais la, je sais que j'ai enorme de fuite partout et j'ai pas super envie de me les resoudre a la main... donc un pitit soft serai le bienvenu!!!
    Merci !!
    Alors tu sera interessé par ça:

    http://emmanuel-delahaye.developpez.com/clib.htm
    Module SYSALLOC

    Ca manque un peu de mode d'emploi !. Si ça t'intéresse, je peux m'y coller... j'ai du temps libre en ce moment (ma boite à brûlé).

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    ok ok
    je regarde tt ca demain!!
    Merci!!

    PS desole pour ta boite... et bon courage a toi!!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par Emmanuel
    (ma boite à brûlé)

    Si ils avaient respecté la norme incendie ... Ok désolé je

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Yabo
    Citation Envoyé par Emmanuel
    (ma boite à brûlé)
    Si ils avaient respecté la norme incendie ... Ok désolé je
    Effectivement, il n'y aurait peut être pas eu 55 voitures brûlées dans la parking souterrain avec propagation au rez de chaussée... Une enquête est en cours, et je pense que le propriétaire des locaux va passer un sale quart d'heure...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    coucou!
    Bon j'ai regarde ton code et c'est vrai que j'ai un peu de mal a bien saisir.
    De plus, a un moment donne, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include "ed/inc/sys.h"
    #include "ed/inc/cnt.h"
    Je n'ai pas trouve ces fichiers.
    Je n'ai recupere que sysalloc.*

    Je ne comprends pas tres tres bien la...
    Merci de ton aide

    Pour valgrind je le testerai ce WE, ici j'ai pas le droit.........

    Merci encore!!

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par vince3320
    Bon j'ai regarde ton code et c'est vrai que j'ai un peu de mal a bien saisir.
    De plus, a un moment donne, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include "ed/inc/sys.h"
    #include "ed/inc/cnt.h"
    Je n'ai pas trouve ces fichiers.
    Je n'ai recupere que sysalloc.*
    Ils sont dans les modules respectifs SYS et CNT sur la même page. Il faudra bien sûr ajouter les .c correspondants au projet...

    J'ai ajouté un lien 'mode d'emploi' (un peu spartiate) accessible à partir de la liste des fonctions (module CLIB)

    http://emmanuel-delahaye.developpez.com/sysalloc_um.htm

    C'est un peu fastidieux, mais on y arrive.

    N'hésite pas à poser des questions.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Je ne trouve pas le module cnt.

    Il est bien sense se trouver sur cette page?

    http://emmanuel-delahaye.developpez.com/clib.htm

    De plus, il a l'air de manquer ceci
    #include </djgpp/include/sys/version.h>

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par vince3320
    Je ne trouve pas le module cnt.

    Il est bien censé se trouver sur cette page?

    http://emmanuel-delahaye.developpez.com/clib.htm
    Oui, mais j'ai rajouté le lien ce matin. Il faut recharger la page.
    De plus, il a l'air de manquer ceci
    #include </djgpp/include/sys/version.h>
    Oui, c'est dans une partie un peu glauque de sys.h, qui n'est pas portable... Quel est ton compilateur ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Ben meme en rechargeant ta page, je ne le vois pas...
    Il est entre quoi et quoi normalement?
    C'est peut etre moi qui a du mal...

    mon compilateur c'est gcc
    apres je ne sais pas comment savoir quel version de gcc je possede...

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Moi je le vois :

    CHRO Mesure du temps d'exécution chro.c chro.h ISO-C 90
    CNT Compteurs cnt.c cnt.h cnt_err.itm ISO-C 90
    CS8 Checksum 8-bit cs8.c cs8.h ISO-C 90
    Fais bien "actualiser" (et pas simplement reclicker sur le lien).

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    en fait, cela doit venir de l'endroi ou je me trouve car meme sur un autre post je ne voi pas le lien.
    Je retenterai plus tard dans la journee!!!
    Merci!!

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par vince3320
    mon compilateur c'est gcc
    apres je ne sais pas comment savoir quel version de gcc je possede...
    gcc -V

    Citation Envoyé par vince3320
    en fait, cela doit venir de l'endroi ou je me trouve car meme sur un autre post je ne voi pas le lien.
    Je retenterai plus tard dans la journee!!!
    Merci!!
    Essaie en effacant l'historique de ton navigateur.

    Sinon voici les liens (si ca te dérange Emmanuel je les enlève) :

    cnt.c
    cnt.h
    cnt_err.itm

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    nickel
    Donc j'ai tout recupere!!
    merci bien!

    La version de gcc est

    gcc version 2.96

  18. #18
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par vince3320
    Ben meme en rechargeant ta page, je ne le vois pas...
    Il est entre quoi et quoi normalement?
    C'est en ordre alphabétique, donc entre CHRO et CS8

    http://emmanuel-delahaye.developpez....b/ed/src/CNT.C
    http://emmanuel-delahaye.developpez....b/ed/inc/CNT.H
    http://emmanuel-delahaye.developpez....nc/CNT_ERR.ITM
    mon compilateur c'est gcc
    apres je ne sais pas comment savoir quel version de gcc je possede...
    [EDIT]
    J'ai modifié sys.h et sys.c. Ca devrait regler le probleme avec DJGPP, mais je n'ai pas de machine Linux pour tester.
    [/EDIT]

    Tiens moi au courant.

  19. #19
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Yabo
    Sinon voici les liens (si ca te dérange Emmanuel je les enlève) :
    Pas du tout. Rien de secret!

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    C'est bon, je les ai!

    Mais il reste ceci
    sys.h:197:40: /djgpp/include/sys/version.h: Aucun fichier ou répertoire de ce type

    avec gcc 2.96

    Merci a toi

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [JVM]Fuite de mémoire
    Par anykeyh dans le forum Général Java
    Réponses: 6
    Dernier message: 28/09/2009, 23h43
  2. Réponses: 5
    Dernier message: 17/03/2006, 19h19
  3. [memoire]Fuite de memoire?
    Par clovis dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/01/2006, 23h04
  4. Outils pour rechercher des fuites de memoires dans un prog
    Par elekis dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 29/04/2005, 22h06
  5. fuite de memoire dans une liste de pointeur sur composant
    Par Nicolos_A dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/12/2004, 09h46

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