La libération d'un noeud [Fermé]

Signaler
Messages postés
11
Date d'inscription
mardi 20 décembre 2016
Statut
Membre
Dernière intervention
15 avril 2017
-
yg_be
Messages postés
9404
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2020
-
salut a tous j'espere que vous etes , j'ai une petite question , est que vous pouvez svp m'expliquer pourquoi on a donné **pn et pas *p pour liberer ce noeud
et merci d'avance:

void LibererNoeud( NOEUD** pn )
{
    if( *pn != NULL )
    {
        free( *pn );
        *pn= NULL;
    }
}

3 réponses

Messages postés
430
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
8 janvier 2020
50
Pour libérer le pointeur suffit, mais ici on veut aussi mettre le pointeur à 0.
Pour pouvoir modifier une l-value passée, il faut recevoir son adresse donc l'adresse d'un pointeur est bien NOEUD**.
void LibererNoeud( NOEUD* pn )
{
   if ( pn != NULL ) {
      free( pn );
      pn=NULL;// ne sert a rien, c'est le pointeur initial qu'il faut effacer
   }
}
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 83206 internautes nous ont dit merci ce mois-ci

Rocailleux
Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
76
exact
Messages postés
542
Date d'inscription
mercredi 9 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
76
ça doit dépendre de la façon dont la fonction est appelée, parce que pour libérer l'espace un simple pointeur suffisait
Messages postés
9404
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2020
499
bonsoir, les réponses du forum ont-elles été utiles?