Bonjour

j'ai un bug que je ne comprends pas, voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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