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