initialisation incorrecte dans une boucle for
Bonjour,
J'ai le code suivant :
Code:
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;
...
} |
Ce code, au milieu d'une grosse appli. plante une fois sur deux en moyenne.
voilà le résultat quand le comportement n'est pas celui attendu :
Code:
1 2 3
| 1 -> 0xb6d04968
2 -> 0xb6d00040
3 -> 0xb6d04968 |
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.
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 ?