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

C++ Discussion :

Internal Compiler Error sur instruction 'delete'


Sujet :

C++

  1. #1
    Membre éclairé Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Par défaut Internal Compiler Error sur instruction 'delete'
    Hello

    J'ai un problème d'erreur interne du compilateur que je ne comprends pas du tout (d'ailleurs, c'est la première erreur interne de compilateur que je vois ... !).

    Après quelques modification pour isoler le problème, j'ai remarqué que si je mettais en commentaire une ligne 'delete MonPointeur', l'erreur interne ne se produisait plus ... Le pire, c'est que ce delete était déjà là avant que cette erreur ne se produise ... !

    J'utilise un compilateur pour microprocesseur Coldfire (gcc-m68k si je dis pas de bêtise et que ça vous dit quelque chose ...).

    J'ai déjà eu cette erreur cette semaine une fois, que j'ai résolu en 30 secondes sans le vouloir ...

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    J'utilise GCC tous les jours et je n'ai jamais eu ce genre de problèmes.
    De quelle version s'agit-il ?

    Essaie de produire un exemple minimal réduit qui produit l'erreur.

  3. #3
    Membre éclairé Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Par défaut
    J'utilise gcc version 3.4.2 ... Et mingw32-make.exe version 3.81rc2 ...

    J'avoue ne pas être au clair avec toutes ces versions gcc, mingw32, make ...

    Cependant, je ne comprends pas mon erreur interne, car l'instruction delete qui pose apparemment problème était déjà présente dans mon programme avant que l'erreur apparaissent ... !

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu as peut-être modifié quelque chose dans ta classe sur laquelle le pointeur pointe qui cause le probème, déclenché par l'appel à delete (donc au destructeur). On peut voir un peu de code ?

  5. #5
    Membre éclairé Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Par défaut
    Le pointeur dont j'essaie de libérer la mémoire pointe sur une structure (en C) que je n'ai pas modifier ... De plus, à d'autre endroit dans mon programme, je fais des 'delete' de cette même structure et le compilateur ne plante pas (à moins qu'il ne soit pas encore arrivé à ces lignes dans sa compilation ).

    Pour le code, voici celui de la structure que je veux libérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct tMsgInter
    {
      void*   pBufQueuePointer;       //Must be there for message interchange by fifo
      UINT8   Sender;
      UINT8   Type;
      UINT16  Param;
      OS_FIFO *SenderFIFO;
      UINT8   Day;
      UINT8   Month;
      UINT16  Year;
      UINT8   Hour;
      UINT8   Minute;
      UINT8   Second;
    } TMsgInterTask;
    Et voici l'endroit qui pause problème :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    void UserMain(void *pd)
    {
     
    //... Partie d'initialisation du programme ...
     
      while (1)
      {
        task_msg = (PMsgInterTask)OSFifoPend(&main_fifo, 1);
        if(task_msg != NULL)  
        {
          switch(task_msg->Sender)
          {
            case MSG_FROM_MAIN : MAIN_MainMsg(task_msg);
                                 break;
            case MSG_FROM_TCP  : LLAddLog("TCP");
                                 sprintf(tmp_tab_char_1, "%d", task_msg->Sender);
                                 LLAddLog(tmp_tab_char_1);
                                 MAIN_TCPMsg(task_msg);
                                 break;
            case MSG_FROM_TEST : MAIN_TestMsg(task_msg);
                                 break;
            default : LLAddLog("[Main] Message received from unknow sender", LL_WARNING);
          }
    //$$$$ Pause problème à la compilation !
    //      delete task_msg;
          task_msg = NULL;
        }
        //$$$$ A voir si on le laisse là ...
        //if(!TLSendWDTReset())
        //  LLAddLog("An error occured when resetting the Watchdog Timer of the towers", LL_WARNING);
        OSTimeDly(1);
      }
    }
    Voilà, j'espère que ça vous aidera ... Je bosse sur un système embarqué, et la machine ne sera pas souvent éteinte, donc cette instruction de libération de mémoire est importante si je veux pas que remplisse tout pour rien ...

    Je me répète, mais ce qui me perturbe le plus, c'est le fait que cette erreur interne soit apparu sur cette ligne alors qu'avant ça ne faisait rien ...

    Merci pour votre aide !

Discussions similaires

  1. [ZF 1.8] Erreur 500 Internal Server Error sur ->authenticate();
    Par pbraems dans le forum Zend_Acl & Zend_Auth
    Réponses: 1
    Dernier message: 23/07/2009, 11h32
  2. Compile error sur mac
    Par thomas_strass dans le forum Général Java
    Réponses: 4
    Dernier message: 15/04/2009, 10h30
  3. erreur d'exception "internal compilation Error"
    Par opensource dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2008, 11h26
  4. erreur d'exception "internal compilation Error"
    Par opensource dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 07/01/2008, 15h05
  5. Besoin d'aide pour contourner une internal compiler error
    Par Laurent Gomila dans le forum C++
    Réponses: 18
    Dernier message: 27/06/2006, 22h09

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