Bug tres etrange avec une itération sur une map
Bonjour
j'ai un bug que je ne comprends pas, voici le code :
Code:
1 2 3 4 5
| for (std::map<int, SchedTask*>::iterator i = handlers.begin(); i != handlers.end(); ++i)
{
handlers.erase(i->second->id);
delete i->second;
} |
je compile sous linux avec GCC4.1 -> ca plante : l'iterator continue même s'il est en dehors de la map (donc bug sur le delete)
je compile avec VS 2005 -> ca marche.
et il me semble que chez un collègue ca marchait il y a qq mois (sous linux GCC3.X)
Est ce que qq trouve ca normale?
Est ce que qq a une idée a pour résoudre ce probleme?
merci a bientot