La libération d'un noeud

Fermé
salahuiste Messages postés 11 Date d'inscription mardi 20 décembre 2016 Statut Membre Dernière intervention 15 avril 2017 - Modifié par KX le 7/03/2017 à 20:31
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 17 mars 2017 à 22:11
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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
8 mars 2017 à 09:04
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
Utilisateur anonyme
8 mars 2017 à 19:48
exact
0
Utilisateur anonyme
7 mars 2017 à 22:17
ç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
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
17 mars 2017 à 22:11
bonsoir, les réponses du forum ont-elles été utiles?
0