probleme à la fermeture d'une fonction, Liste chainée
Bonjour,
j'ai un problème de destruction de cellule d'une liste chainée :
Code:
1 2 3 4 5 6 7
|
typedef struct cell_s{
int i;
char* c;
struct cell_s *next;
}cell;
typedef cell *List; |
je crée dans mon main un tabelau de listes : List *L= New List[4], puis je veux qu'elle soit modifié par une fonction f qui rajoute une cellule à la liste et dans cette fonction j'utilise d'autres fonction qui utilise cette liste.
voila en gros l'architechture du programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
int f2(...,List L){
...
//L n'est pas modifiée L est correcte
return entier;
}
void f(List &L){
...
//ajout d'une cellule dans la liste L
...
// pas de problèmes , L est correcte
int val = f2(...,L);
//problème L n'est pas bonne.
...
}
int main(){
List L;
...
for (int j=0; j<10;i++)
{
for (int i=0; i<4;i++)
{
f(L[i]);
}
}
return 1;
} |
Les allocations mémoires sont bonnes, le problème est que lorsque je quitte la fonction f2 la valeur de L->i devient 0 alors que L->c reste correcte (alors qu'avant et dans la fonction f2, elles sont ttes les deux correctes).
de plus lorsque je sort de la fonction f, la première cellule de la liste L[i] qui a buggé prend les valeurs de L[i+1] pour i et c mais par contre conserve le pointeur vers la cellule suivante correctement...
bref je comprend pas trop ce qu'il se passe, est ce que le fait d'utiliser des &L et L ne provoque pas une destruction de cellule lorsque la fonction f2 se termine car juste avant le return tt est bon et apres la fonction f2 ca a bugger...