Liberation de memoire en c

Fermé
vieulo - 29 mai 2002 à 14:26
ariock Messages postés 125 Date d'inscription dimanche 28 avril 2002 Statut Membre Dernière intervention 31 janvier 2005 - 29 mai 2002 à 20:57
je creer un tableau de chaine de car
char** tmp;

j'alloue ensuite de la memoire pour chaque composant de ce tableau
tmp[i] = (char*)alloca(strlen(msg) + 1);

je souhaite liberer liberer la memoire de tmp.
Est ce que un free(tmp); suffit ou je suis oblige de liberer tous les index du tableau avant de liberer tmp
A voir également:

1 réponse

A ton avis ?

Les bouts de mémoires alloués n'étant pas nécessairement consécutifs (dans le cas où ils le seraient, le système serait obligé d'en assurer la fusion), la seule soultion est d'effectuer la libération par une boucle (avec temp[indice]).
Une des erreurs couramment rencontrées, dans le cas de listes chaînées par exemple, est la destruction du pointeur "suivant" préalablement à la demande de libération de l'espace pointé !!!
0
merci bcp

Mais c'est bizarre
lorsque je teste la boucle
si je fais un printf de tmp[0], il renvoit la valeur d'avant la liberation?????
0
ariock Messages postés 125 Date d'inscription dimanche 28 avril 2002 Statut Membre Dernière intervention 31 janvier 2005 5 > vieulo
29 mai 2002 à 20:57
Ben normal, la liberation ne veux pas forcement dire que le systeme va recuperer l'espace memoire directement, donc parfois ca donne ca, encore plus fort, avec des pointeur non aloue, tu peux avoir un programme qui tourne... sauf que c'est absolument suicidaire...

Je suis un gaucher contrariant. C'est plus fort que moi,
il faut que j'emmerde les droitiers.
0