Désallocation de mémoire ...
Hello !
P'tite question sur la désallocation de mémoire :
J'ai une liste (doublement chainée, mais peu importe) dont chaque cellule contient un pointeur sur void.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| typedef struct scell
{
void * value;
struct scell * next, * previous;
}
cell;
typedef struct slist
{
int nbcell;
cell * first, * current, * last;
}
list; |
Ce pointeur sur void va en fait pointer sur deux structures différentes (une destinée aux competitions et l'autre aux concurrents). Je mets pour l'exemple celle des competitions :
Code:
1 2 3 4 5 6 7
| struct competition
{
char matric[3], intitule[36], datedeb[9], pays[4];
int tabinscp[100];
int flagcompet;
int poscp;
}; |
Au cours de mon programme j'ai donc alloué de la mémoire pour ces structures.
Ex :
Code:
1 2
| struct competition * p_compet;
p_compet = malloc( sizeof( struct competition ) ); |
Et cela autant de fois qu'il y a de compétitons (idem pour les concurrents)
J'ai également chaque fois créé une nouvelle celleule dans ma liste afin de "contenir" la structure compétition sus-créée.
Code:
1 2 3 4 5 6 7 8 9
| {
lis->current = lis->last->previous;
lis->current->next->previous = ( cell * ) malloc( sizeof( cell ) );
lis->current->next->previous->value = x;
lis->current->next->previous->previous = lis->current;
lis->current->next->previous->next = lis->current->next;
lis->current->next = lis->current->next->previous;
( lis->nbcell ) ++;
} |
Voilà !...
Bon, maintenant, j'en suis à la libération de toutes ces structures (fin de programme). Est-ce qu'un free d'une cellule va automatiquement engendrer un free d'une structure (je ne pense pas mais je voudrais une confirmation) ?
Merci ! :wink: