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][VC++6]Libération de mémoire


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut [MFC][VC++6]Libération de mémoire
    Bonjour,

    Je commence à perdre patience devant mes problèmes d'allocation/libération mémoire ... j'ai lu pas mal de docs et tutoriaux sur le sujet mais j'arrive pas à le résoudre ..

    contexte: DLL appelée par une session APL

    Déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ulint* totpds; //unsigned long int
    Allocation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    totpds = new ulint[NBMAXSAUTS];  //NBMAXSAUTS=90
    Initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	for(int i=0;i<NBMAXSAUTS;i++)
    	{
    		totpds[i] = 0;
    	}
    Affectation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    totpds[tabnumsaut[i]] = totpds[tabnumsaut[i]] + vpdsacc[i];
    tabnumaut[] contient des valeurs < 90
    vpdsacc[] contient des valeurs de types unsigned short int

    Libération
    plantage violent au moment de l'exécution de la ligne ci-dessus ...
    du type (je cite):
    "Microsoft Visual C++ Debug Library
    Debug Error!
    etc etc..."

    Je nage, donc toute aide sera la bienvenue

    merkiiiiiiiiiiii

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut
    Est-ce que le plantage pourrait être un effet de bord d'un problème ne concernant pas cette fameuse variable ?

  3. #3
    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
    Tu nous as coupé la partie intéressante de la debug error.
    On pourrait avoir tout le message ? (y compris ce qui est affiché dans le Output du debugger ?)


    Enfin... Je pense que l'erreur est un truc du genre "guard bytes modified", ce qui indique un débordement de tableau : Tu aurais écris à un index strictement inférieur à zéro ou supérieur/égal à NBMAXSAUTS...
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut
    Citation Envoyé par Médinoc
    Tu nous as coupé la partie intéressante de la debug error.
    On pourrait avoir tout le message ? (y compris ce qui est affiché dans le Output du debugger ?)


    Enfin... Je pense que l'erreur est un truc du genre "guard bytes modified", ce qui indique un débordement de tableau : Tu aurais écris à un index strictement inférieur à zéro ou supérieur/égal à NBMAXSAUTS...
    Je te filerais le message complet demain si ça peut t'aider.

    Pour l'écriture hors bornes, je ne crois pas mais bon, je vérifierais ça aussi

    Je me suis pourtant bien assuré que les indices des boucles dans lesquelles mon tableau est affecté sont inférieurs à NBMAXSAUTS

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut
    Message d'erreur complet:
    Debug Assertion Failed!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Program: D:\aplwin40\aplw.exe
    File: dbgheap.c
    Line: 1011
     
    Expression: _CrtIsValidHeapPointer(pUserData)
     
    For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
     
    (Press Retry to debug the application)

  6. #6
    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
    OK, ça, ça ressemble plus à une libération de pointeur invalide ou déjà libéré.
    • Vérifie si tu ne modifie pas le pointeur dans ta fonction
    • Vérifie si tu n'as pas mis ton delete[] dans une boucle où il ne devrait pas être
    • Vérifie aussi que tu n'as pas déclaré deux fois le pointeur dans la même fonction, on peut avoir des conneries avec ça...
    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.

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

Discussions similaires

  1. [MFC] Libération de mémoire allouée.
    Par Denn's dans le forum MFC
    Réponses: 9
    Dernier message: 03/01/2008, 11h53
  2. Réponses: 1
    Dernier message: 02/12/2005, 14h18
  3. Libération de mémoire
    Par petitcoucou31 dans le forum Langage
    Réponses: 1
    Dernier message: 16/09/2005, 14h10
  4. [Debutant(e)]problème de libération de mémoire
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/02/2005, 17h38
  5. Réponses: 25
    Dernier message: 16/07/2003, 20h41

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