La libération d'un noeud

salahuiste Messages postés 12 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    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
    1. Utilisateur anonyme
       
      exact
      0
  2. Utilisateur anonyme
     
    ç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
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, les réponses du forum ont-elles été utiles?
    0