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 :

comportement anormal boucle for


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut comportement anormal boucle for
    Bonjour,

    Je suis confronté à une bizarrerie que je n'arrive pas à expliquer. Je travaille sur un programme que j'ai développé il y a quelques temps déjà, initialement sous devCpp, et que j'ai récemment eu le plus grand mal à passer sous NetBeans. A l'exécution, j'ai un plantage (de type segfault), je lance donc le débugger, voici la boucle incriminée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          for(int i=0; i<8; i++)
          {
             glTranslated(position[i][0], position[i][1], position[i][2]);
             if(lumiere[i]) glColor4f(1,0,0,1);
             else glColor4f(0,0,1,1);
             glutSolidSphere(0.1, 10, 10);
             glTranslated(-position[i][0], -position[i][1], -position[i][2]);
          }
    le problème provient de la variable i, qui s'incrémente anormalement, au lieu de passer de 1 à 2, elle prend la valeur -1070596096 ! Je ne comprends vraiment pas ce qui se passe, d'autant que ce programme fonctionnait parfaitement précédemment. Si vous avez des idées, je suis toute ouïe !

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Je me fierais pas trop à la valeur de i, je ne vois rien de choquant dans le code, le plus probable est que ce seg fault soit un accès en dehors des limites du tableau.
    Peux tu nous montrer comment tu déclares et initialises tes tableaux "position" et "lumiere" ?

    Merci

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Merci de ta réponse, voici la manière dont ces variables sont déclarées et initialisées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    bool lumiere[8] = { true, true, true, true, true, true, true, true };
     
         GLfloat ** position;
         position=new GLfloat * [8];
         for(int i=0; i<8; i++)
         {
              position[i] = new GLfloat[4] ;
              position[i][0] = 0 ;
              position[i][1] = 0 ;
              position[i][2] = 0 ;
              position[i][3] = 1 ;
         }
    Bref, rien d'extraordinaire, d'autant que comme précisé, le programme fonctionnait parfaitement avant que je le passe (non sans douleur !) sous Netbeans.

  4. #4
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    As-tu bien linké toutes les bibliothèques que tu utilises, et copié celles dynamiques ?
    Parce que c'est certainement la seule chose qu'un changement d'IDE peut provoquer, sauf si il y a UB, ce qui ne semble pas le cas ici.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Je pense que tout est linké correctement, mais je reconnais que j'ai eu le plus grand mal à effectuer ce linkage afin que ça compile (j'y ai passé quelques jours !), bref, je vais vérifier s'il n'y aurait pas une erreur d'incohérence de version entre les headers et les libs par exemple, mais ça normalement le compilo me l'aurait dit non ?

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Pas forcement, le compilateur a peut être les bons link mais pas pour l'exécution. Mais ça ne serait pas un seg fault.

    Tu peux tester si les fonctions gl te retourne des erreurs (au cas où, sans grande conviction)

    Rien non plus sur le code d'initialisation. C'est classique. Par contre, je te conseillerais quand même d'utiliser un vector de dimension 4*8.
    Peut être que tu as un delete qui t'efface ton tableau pendant son utilisation (sans grande conviction non plus)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Résolu ! J'ai complètement supprimé GLUT que j'ai remplacé par FreeGLUT (la même chose en moins obsolète semble t il !), et ça marche. Merci pour ton aide en tout cas

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

Discussions similaires

  1. comportement boucle for bizarre
    Par maccormick dans le forum Général Java
    Réponses: 9
    Dernier message: 22/09/2010, 14h07
  2. Réponses: 3
    Dernier message: 20/09/2006, 22h35
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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