Pb de pointeur mal détruit
Bonjour,
j'utilise dans un prog une liste chainée où chacun des maillons est alloué avec new, desalloué avec delete.
Mon probleme : si dans le thread n°1 je travaille sur un maillon, et que dans le thread n°2 je détruits ce maillon (en le mettant à NULL apres le delete), je me retrouve dans le thread n°1 avec un maillon non nul, mais détruit, et du coup je ne peux pas faire if(p != NULL)
En gros :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
thread 1 :
csPile.Lock();
info = p->info;
csPile.Unlock();
thread 2 :
csPile.Lock();
delete p;
p = NULL;
csPile.Unlock();
thread 1 :
csPile.Lock();
if(p != NULL) //ça passe
info = p->info; //ça plante
csPile.Lock();
Merci par avance |