Bonjour,
J'ai le code suivant :
Ce code, au milieu d'une grosse appli. plante une fois sur deux en moyenne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 cout << " 1 -> " << * (nodes().begin()) << endl; for (deque<Position*>::iterator pit = nodes().begin(); pit != nodes().end(); ++pit) { cout << " 2 -> " << * pit << endl; cout << " 3 -> " << * (nodes().begin()) << endl; ... }
voilà le résultat quand le comportement n'est pas celui attendu :
Quand ça ne plante pas, les 3 lignes renvoient bien entendu la même adresse. Je ne comprends pas comment il est possible que ces résultats soient différents.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1 -> 0xb6d04968 2 -> 0xb6d00040 3 -> 0xb6d04968
La fonction nodes() renvoie un deque<Positions*> construit bien avant que ces lignes ne s'exécutent.
Existe il une méthode nodes par défaut dans les objets c++ qui pourrait poser un problème d'accès ?
Mon appli utilise plusieurs thread, mais qui ne partagent jamais les même variables. Le scheduling peut il influencer le résultat de mon code ?
Sinon, d'où vient ce problème ?
Partager