salut les gens
j'ai un code du genre :
vector <client> Clients;
int main()
{
std::vector<client>::iterator id;
while(1)
{
for(id = Clients.begin(); id != Clients.end(); ++ id)
{
if(id->sock->eof())
{
delete id->sock;
Clients.erase(id);
continue;
}
parsemsg(*id->sock);
}
}
}
client est une structure à moi, avec dedans une classe clSocket de ma composition qui gère la connexion.
parsemsg est une fonction qui va chercher les paquets, tout ca.
Le problème est que le programme segv dès que le client déco, dans clSocket::eof()
c'est comme si le vecteur avait effectivement supprimé la structure correspondante, mais sans mettre à jour begin() et end(); il continue à regarder si le socket qu'on a déjà fermé contient des données...
Enfin je m'arrête là, j'ai l'impression d'embrouiller les choses plus que d'expliquer...
Système : Linux hermes 2.6.8.1 #4 Mon Oct 4 09:51:32 CEST 2004 i686 Celeron (Coppermine) GenuineIntel GNU/Linux
Compilateur : gcc version 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)
(infos au cas ou, je pense que ca vient plutot de mon code)
merci d'avance pour toute aide
mad:: prog