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 :

memory check error at 0x02875C1-- = 0x01, should be 0xFD


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut memory check error at 0x02875C1-- = 0x01, should be 0xFD
    Bonjour,

    J'ai un problème sur un gros programme bien déguelasse (c'est pas moi qui l'ai fait! ) :

    Voilà en gros à quoi ressemble le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    main
    {
    CMyClass* myclass = new CMyClass();
     
    for (i = 0; i < myclass ->getNbElements();i++)
    {
    //Plein de traitements dans tous les sens
     
    _CrtCheckMemory(); //Les [8] dernieres iterations engendrent des memory check error at 0x02875C1... = 0x01, should be 0xFD
    }
     
    //delete myclass  //cas1
    delete myclass //cas2
     
    }

    Problème :

    Mettons qu'on doive faire 200 itérations, les 8 dernières vont afficher le message de debug évoqué ci-dessus (si je fais moins d'itérations, pas de souci donc je sais qu'il y a un débordement de tableau ou quelque chose comme ça au vu de ce que je lis sur les forums mais le programme est tellement complexe et ramifié que je cherche une aiguille dans une botte de foin)

    cas1 : je ne fait pas de delete myclass ->j'ai des fuites mémoires qui défilent pendant 5 bonnes minutes (c'est mal!)

    cas2 : je fais le delete et BOUM "DAMAGE: after Normal block"

    Au secours!

  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
    La memory check error et le Damage after Normal Block vont dans le même sens: Débordement de tableau après les données, et le débordement a eu lieu doit dans le delete, soit dans un delete appelé par un destructeur.

    Conseil : Ajoute une trace (TRACE, OutputDebugString(), etc.) dans le destructeur de myclass et dans tous ceux de tes classes persos, tu verras quelle trace est affichée en dernier avant l'erreur...
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par Médinoc
    Conseil : Ajoute une trace (TRACE, OutputDebugString(), etc.) dans le destructeur de myclass et dans tous ceux de tes classes persos, tu verras quelle trace est affichée en dernier avant l'erreur...
    Si seulement les éléments alloués étaient tous désalloués dans les destructeurs... Mais certaines allocations/désallocations ont lieu pendant certaines fonctions...enfin je vais voir ce que je peux faire avec ça.

Discussions similaires

  1. Le "check-error" pour les nuls !
    Par Foreverson dans le forum Scheme
    Réponses: 1
    Dernier message: 24/01/2009, 05h34
  2. [Free Pascal] Erreur d'éxecution 201 : Range check error
    Par jeanmich dans le forum Free Pascal
    Réponses: 4
    Dernier message: 15/01/2009, 13h38
  3. IDHTTP : Range check error
    Par Hinox dans le forum Composants VCL
    Réponses: 0
    Dernier message: 12/06/2008, 16h10
  4. Run Time Check Error #2
    Par OrthoMaker dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 20/08/2007, 10h20
  5. Range check error.
    Par Steff2 dans le forum Delphi
    Réponses: 2
    Dernier message: 16/07/2007, 21h02

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