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

Visual C++ Discussion :

Détection et résolution de fuites mémoire


Sujet :

Visual C++

  1. #1
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut Détection et résolution de fuites mémoire
    Salut,

    j'ai un petit soucis avec une application C++ que je développe sous VS2008.
    Cela fait déjà un certain temps que le debugger ne me fait plus remonter de fuites mémoire, cependant si je surveille le processus de mon appli dans le gestionnaire des tâches je constate que la taille de la mémoire qu'il utilise ne fait quasi qu'augmenter avec l'utilisation qu'on en fait. Si cette taille devient réellement importante l'application va même rencontrer des problèmes de performances ...

    Voici donc ma question : comment (outils ? je ne sais quoi ...) détecter ces fuites et y remedier ?

    Merci d'avance.

    PS :
    il y a aussi un truc très comique, si je minimise l'application à l'aide du bouton système qui sert à ça, alors je récupère directement la mémoire perdue (et même plus ) et même après une restauration de la fenêtre ça ne remonte pas (sauf si j'utilise l'appli "normalement"). Plus précisement mon .exe utilise moins de mémoire (par exemple de l'ordre de 80mo avant, et 4mo après ....) cependant la charge totale de mémoire utilisée par l'ensemble des processus reste inchangé ?!?

  2. #2
    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
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Il n'y a pas des outils avec Visual C++ Pro ? Après les outils sous Windows sont en général payants. Je n'en connais pas de gratuit.
    Attention, la mémoire libérée par un processus peut ne pas être récupérée tout de suite par le système. Elle est juste marquée comme dispo. La récupération a lieu quand le système en a besoin ou quand il juge qu'il est temps de le faire. Cela peut expliquer les variations que tu observes.

  3. #3
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    La montée en charge ne me dérangerait à la limite pas si elle ne s'accompagnait pas du perte drastique de performances

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 141
    Points : 12 245
    Points
    12 245
    Par défaut
    Pour les performances, utilisez le profiler.

    Pour le tracking mémoire, utilisez _CrtSetDbgFlag.
    http://msdn.microsoft.com/en-us/libr...h3(VS.80).aspx

  5. #5
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Aucun résultat ...


    Merci quand même

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Est-ce du C++ managé ?

    J'ai eu le problème il y a longtemps (sur la version 2003 je pense) d'un garbage collector qui n'était appelé que lors de la réduction du programme.

    Une solution consistait à limiter la durée de vie de certains objets manuellement.

  7. #7
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Est-ce du C++ managé ?
    je programme en C++ natif donc j'ai bien envie de te dire non
    En effet je n'utilise pas .NET, donc pas de GC.

  8. #8
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Hello,

    Windbg + gflags + umdh + ApplicationVerifier

    C'est ce que j'utilise au boulot.

    Windbg, Gflags et Umdh font partis des "debugging tools". On pourrait aussi ajouter les "performance counters" intégrés à Windows. Le tout est assez difficile à prendre en main mais ça vaut vraiment le coup. Umdh est utile pour trouver les mem leaks, même si c'est une entreprise difficile...

    Voir aussi "Preventing Memory Leaks in Windows Applications":
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

  9. #9
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Merci pour tes liens, je vais regarder ça et je vous tiens au courant.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C++] Logiciel détection fuite mémoire pour Windows
    Par Aspic dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 10/12/2010, 18h49
  2. Outil détection fuite mémoire et autre
    Par coolzy dans le forum Visual Studio
    Réponses: 0
    Dernier message: 14/09/2010, 18h07
  3. Détection de fuites mémoires
    Par atm0sfe4r dans le forum C++/CLI
    Réponses: 0
    Dernier message: 17/04/2009, 17h13
  4. 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

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