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

VC++ .NET Discussion :

erreur d�bogage vc++


Sujet :

VC++ .NET

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    D�cembre 2010
    Messages
    98
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2010
    Messages : 98
    Par d�faut erreur d�bogage vc++
    slt, je travaille sous vc++ , mon code s'ex�cute normalement mais quand je viens de fermer la boite de dialogue, je trouve l'erreur suivante(boite de message):

    HEAP CORRUPTION DETECTED: after block #119 at 0x001063C8
    CRT detected that the application wrote to memory after end of heap buffer

    est ce cela peut �tre du aux pointeurs?( j'utilise l'allocation dynamique )
    j'ai v�rifi� la taille des tableaux et je ne trouve pas qu'ils sont inf�rieures � la taille des donn�es contenues.

    Quelqu'un peut m'aider s'il vous plait?

  2. #2
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 300
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 300
    Billets dans le blog
    2
    Par d�faut
    Bonjour,

    cette erreur signifie que quelque part tu �cris en dehors de la m�moire que tu as allou�. Du coup le tas est corrompu et lorsqu'il essaie de tout d�sallouer, �a crashe.

    Il y a milles fa�ons de cr�er une "heap corruption", mais bien �videmment, une mauvaise manipulation de pointeurs est bien souvent la cause. C'est une des raisons pour lesquelles on dit: "utiliser les pointeurs que quand on ne peut pas faire autrement".

  3. #3
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

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

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Pour �tre pr�cis, vous avez ce message car vous �tes en mode DEBUG et, avec les bonnes options de compilation, � chaque fois que vous faite une allocation dans le tas, le C-Runtime en DEBUG ajoute quelques octets avant et apr�s la zone m�moire qui est fourni au programme.
    Par exemple, apr�s un appel � la fonction malloc de X octets qui retour un pointeur P, alors, dans la m�moire du processus, il y a quelques octets aux adresses juste inf�rieurs � P avec des valeurs sp�ciales, type 0xCC, et il y a quelques octets aux adresse juste sup�rieurs � P+X qui contiennent aussi des valeurs sp�ciales.

    Au moment d'une lib�ration de m�moire, la C-Runtime v�rifie pour tous les bloques de m�moires qu'elle a allou�e (et pas uniquement celle qu'elle est en train de d�sallouer), que ces 2 zones contiennent toujours ces valeurs sp�ciales.
    Si ce n'est plus le cas, la C-Runtime ouvre cette fameuse fen�tre d'alerte.

    Attention, cette v�rification � la lib�ration de m�moire n'est pas syst�matique � moins de le sp�cifier avec _CrtSetDbgFlag (entre autre).
    http://msdn.microsoft.com/en-us/libr...(v=vs.71).aspx

    Moi, sur ce genre de probl�me, j'active le check syst�matique de la m�moire pour prendre le code fautif la main dans le sac.

  4. #4
    Membre confirm�
    Inscrit en
    D�cembre 2010
    Messages
    98
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2010
    Messages : 98
    Par d�faut
    slt, merci pour la r�ponse. Cela m'a clarifi� les choses
    pour la fonction _CrtSetDbgFlag , elle est utilis�e en C alors que je travaille avec VC++ ( op�rateur new et delete pour les pointeurs).

    pour le check syst�matique de la m�moire, comment l'activer? Merci

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

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

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Les primitives new et delete utilisent les primitives malloc et free.

    Donc CrtSetDbgFlag marche aussi pour les allocations C++ "standard".

    pour le check syst�matique de la m�moire, comment l'activer? Merci
    C'est pratiquement dans l'exemple de la page MSDN que je vous ai fourni.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Get the current state of the flag
    // and store it in a temporary variable
    int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
     
    // Turn On (OR) - launch _CrtCheckMemory from
    // being called at every allocation request
    tmpFlag |= _CRTDBG_CHECK_ALWAYS_DF;
     
    // Set the new state for the flag
    _CrtSetDbgFlag( tmpFlag );

  6. #6
    Membre confirm�
    Inscrit en
    D�cembre 2010
    Messages
    98
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2010
    Messages : 98
    Par d�faut
    si je mets ce code dans chaque fichier .cpp , est cela est suffisant ?ou bien apr�s chaque allocation et d�sallocation de m�moire? Merci

Discussions similaires

  1. [XL-2003] erreur d�bogage 9, travail avec 2 fichiers
    Par Muggsy_68 dans le forum Macros et VBA Excel
    R�ponses: 9
    Dernier message: 06/01/2012, 15h30
  2. R�ponses: 20
    Dernier message: 18/01/2011, 12h47
  3. R�ponses: 3
    Dernier message: 23/07/2007, 11h26
  4. Erreur de d�bogage
    Par mambo dans le forum Visual C++
    R�ponses: 11
    Dernier message: 29/08/2006, 09h15
  5. R�ponses: 8
    Dernier message: 20/01/2006, 13h46

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