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 :

Detected memory leaks


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Par défaut Detected memory leaks
    Bonjour,

    Dans un programme, j'ai un petit soucis. Il plantait, non pas à la compilation, mais à l'execution quand j'appuyais sur un bouton (c'est su Visual C++). Je me suis rendu compte que tout ca à cause d'une variable qui s'amuse à changer de valeur comme bon lui semble. Et j'ai ensuite decouvert dans l'output Debug de VS 2010 :

    Detected memory leaks!
    Dumping objects ->
    f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {829} normal block at 0x057004C8, 40 bytes long.
    Data: < S > B4 A6 B5 53 17 00 00 00 17 00 00 00 01 00 00 00
    c:\sources\liberrormsg.cpp(263) : {827} normal block at 0x0075C088, 12 bytes long.
    Data: < p S> 00 00 00 00 D8 04 70 05 C8 A6 B5 53
    Object dump complete.


    Si j'ai bien compris, j'ai une fuite memoire. Est ce la cause du faite que ma variable change de valeur comme ca ? Ou c'est completement different ?
    Et dans tous les cas, comment y remedier ?

    Merci

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En général, c'est lié à un pointeur mal géré (les pointeurs nus, c'est le mal), ou surtout à un débordement de tableau.

    Dans le cas du tableau, passer par vector et surtout sa fonction at() plutot que [] permet de ne pas accéder en dehors de la mémoire.
    Par ailleurs, il faut toujours veiller à ce que les variables soient initialisées avant d'être lues.

    Je t'invite à activer un maximum de warning de compilation: dans visual, c'est /W4 dans les propriétés du projet.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Par défaut
    Même en activant /W4, il n'y a pratiquement aucun warning (juste 3, 4 mais c'est rien). Il y a pas un moyen de voir toutes les variables declarées/utilisées/... lors de l'execution avec Visual Studio ? Car il y a enormement de fichier et j'en ai pour 1 semaine pour verifier chaques variables , surtout que c'est pas moi qui ai codé ce logiciel..

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    utiliser un débugger, et surtout DrMemory / Valgrind (deux programmes de vérification de la mémoire). Cela dit, je ne connais pas ces derniers.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Par défaut
    Est ce que par hasard cela peut venir d'un dépassement de lecture dans un fichier (si on continue a essayer de lire alors qu'il n'y a plus rien) ?
    Car j'ai trouvé une boucle plutôt louche qui lit dans un fichier

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Je conseilles également un bon petit coup de DrMemory,il va te donner plein d'infos sur ce qui cloche et t'orienter vers la partie du code qui pose problème. Valgrind est super mais ne fonctionne pas sous windows.

Discussions similaires

  1. Detected memory leaks ?
    Par Kermichou dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 17/01/2011, 17h29
  2. Detecter les memory leak sur Borland C++
    Par Bouillou dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/03/2008, 05h20
  3. Detected Memory leaks
    Par alen dans le forum MFC
    Réponses: 7
    Dernier message: 31/01/2007, 21h06
  4. [memory leak detection]
    Par Patriarch24 dans le forum Windows
    Réponses: 3
    Dernier message: 07/09/2006, 17h57
  5. Detected memory leaks!
    Par Cirdan Telemnar dans le forum MFC
    Réponses: 27
    Dernier message: 16/06/2006, 10h04

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