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

MFC Discussion :

[MFC] Problème de mémoire


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut [MFC] Problème de mémoire
    J'ai fait quelques modifications dans le code de mon appli et depuis quelques temps elle commence a afficher des boites de dialogues bizarres du style :




    qu'est ce que ca peut vouloir dire (j'ai entendu parler de fuites mémoires) et d'ou cela peut il venir???


    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Une fuite de mémoire, c'est quand tu oublies de désallouer une zone mémoire allouée quand tu ne t'en sers plus.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ce n'est pas une fuite de memoire, mais une allocation erronée.
    du style une variable non initialisée et utilisée pour specifier la taille de l'allocation et donc avec un nombre astronomique ou negatif .
    un depassement de capacité de la variable etc...
    le mieux etant de mettre des points sur toutes les allocations et de les tracer.


  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Faudrait localiser le code qui émet cette dialogue.
    A propos des fuites de mémoire:
    http://www.developpez.net/forums/viewtopic.php?t=409625

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Je croyais avoir résolu le problème, mais je me suis apperçu qu'en fait, lorsque je compile en debug ca marche (ca n'affiche pas cette fenetre), et lorsque je compile en release, elle apparait

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    typique du bug de debordement memoire ...

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Comment puis je faire pour trouver la variable qui est à l'origine??

    Merci

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    1) methode brute:
    verifier:
    - respecter la regle : pointeur d'allacation initialisé a null dans le constructeur. pointeur detruit dans le destructeur.
    -verifier les allocs/desalloc memoire sur les desalloc intermediaire mettre pointeur à null.
    - verifier les cast sauvages si il y a lieu exemple : caster en char * une CString==danger.
    - sur les CString verifier si sur les GetBuffer(0) il y a ReleaseBuffer.
    - verifier les memset ou memmove si il y en a .
    - verifier les indexations sur tableaux fixes == depassement d'index...
    - verifier variables en rapport avec les allocations exemple depassement de capacité (ex utiliser un char) ,variable non iniatilisée etc..
    - sur les objets alloues avec données membre pointeurs:
    verifier ou interdire ou implementer selon le cas : le constructeur de copie ,operateur d'affectation
    - préférer les passages reférences const (si possible) en lieu de copie ,mettre les retours de fonction const .

    2) méthode de recherche en release:

    - identifier l'evenement/commande/portion de code provoquant le probleme.
    - a partir de la proceder par dichotomie en mettant des AfxMessageBox()
    pour cerner au fur et a mesure la portion de code coupable.
    - correction ...

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Ok merci, j'essaye ca... Je te tiens au courant

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/09/2007, 20h16
  2. Réponses: 21
    Dernier message: 01/02/2006, 09h17
  3. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 10h31

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