La libération d'un noeud

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

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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
 
exact
0
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, les réponses du forum ont-elles été utiles?
0