désallocation mémoire - fonction - structure - tableau dynamique
Bonjour j'ai une petite question sur la désallocation de mémoire.
J'ai une fonction qui renvoie une structure. Dans cette structure il y'a deux éléments : le premier est un tableau de chaine de caractères allouer dynamiquement dans la fonction et le deuxième le nombre de chaines contenues dans le tableau.
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 30 31 32 33 34 35 36 37
|
struct sortie {
long nbelt;
char ** tab;
};
struct sortie listDIR(char * chemin)
{
struct sortie listRAW;
long nbraw = 0;
/* on lit le contenu d'un dossier et on compte le nombre de fichier raw...*/
char ** tabRAW=malloc(nbraw* sizeof(char*));
/* suivi d'un autre malloc fonction de la taille de la chaine*/
/*...*/
listRAW.nbelt=nbraw;
listRAW.tab=tabRAW;
return(listRAW);
}
int main(void)
{
int i, j;
char PathName[]="/home/flaherty/Documents/convertisseur/";
struct sortie listRAW = listDIR(PathName);
j=(int)listRAW.nbelt;
for (i=0; i<j;i++)
{
printf("%s\n",listRAW.tab[i]);
}
} |
Et je me demande déjà est ce que j'ai le droit de faire :
Code:
listRAW.tab=tabRAW;
Et ensuite comment je désalloue la mémoire que j'ai alloué à tabRAW qui devient après listRAW.tab ?
j'ai le droit de faire dans le main un truc du genre :
Code:
1 2 3 4 5 6 7
| for (i=0;i<(int)listRAW.nbelt;i++)
{
free(listRAW.tab[i]);
listRAW.tab[i]=NULL;
}
free(listRAW.tab);
listRAW.tab=NULL; |
??