Bonjour,

J'ai le code suivant :

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;
	...
}
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?