Libération de la mémoire - C - Programmation
Marsh Posté le 09-08-2006 à 17:26:35
Tu dois libérer les pointeurs les plus profonds en remontant.
Dans le cas d'un graph, tu commence par les feuilles, etc.
Marsh Posté le 09-08-2006 à 17:31:47
Pour compléter ce que dit _darkalt3_, en règle générale, il y a autant de free() que de ?alloc().
Marsh Posté le 09-08-2006 à 17:48:04
Elmoricq a écrit : Pour compléter ce que dit _darkalt3_, en règle générale, il y a autant de free() que de ?alloc(). |
Oups !
si tu fais un malloc, puis un realloc, tu n'as qu'un seul free, pas deux !
Marsh Posté le 09-08-2006 à 17:49:47
pfuitt > realloc ne rentre pas dans le pattern ?alloc().
il n'a pas mis *alloc() ou +alloc()
Marsh Posté le 09-08-2006 à 17:53:25
pains-aux-raisins a écrit : pfuitt > realloc ne rentre pas dans le pattern ?alloc(). |
autant pour moi !
me flagele avec des orties fraichement coupées
mais bon ...tendancieux comme conseil, n'est il pas ?
Marsh Posté le 09-08-2006 à 17:54:47
Non, parce que realloc() est une fonction si particulière qu'un traitement particulier lui est réservé.
Marsh Posté le 10-08-2006 à 11:07:25
Dans le cas de mes structures, la libération du graphe, se fait de cette manière ?
MAXNOEUDS est le nombre de fils max que peut avoir un sommet
Code :
|
Marsh Posté le 13-08-2006 à 12:16:45
Je ne comprends pas pourquoi tu renvoies des valeurs qui ne sont pas utilisées.
D'autre part, j'aurais tendance à écrire libereNoeud((*g)->racine);
Marsh Posté le 09-08-2006 à 17:22:44
Bonjour,
je voudrais savoir comment se passe la libération de la mémoire pour des char **, char ***, struct nom **, etc
Par exemple, dans mon cas, j'ai 2 structures :
Comment s'écrirait la fonction int libérerGraphe(Graphe **g) permettant de libérer un graphe.
Merci