IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Utilisation de free


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Par défaut Utilisation de free
    Bonjour,
    J'ai une question sur le programme suivant :
    le type utilisé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef struct element {int valeur;struct element *lien;} Element;
    typedef Element *Liste;
    et
    le type de la fonction estListeVide est:
    Booleen estListeVide (Liste)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void viderListe ( Liste *pListe ) {
     
      if ( !estListeVide ( *pListe ) ) {
        viderListe ( &((*pListe)->lien) );
        free ( *pListe );
        *pListe = NULL;
      }  
    }
    Quel est l'intérêt de faire free (*pliste). Sans le free ça marcherait ?

    Et aussi: pourquoi utiliser & puisque (*pListe)->lien est bien de type Liste *comme l'argument de viderListe....? (&((*pliste)->lien) est de type Liste)


    Merci!

  2. #2
    Membre éclairé Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Par défaut
    bonjour si je ne me trompe pas free() est dans le cadre de la libération de mémoire dynamique hors la dans votre code il n'y a pas d'allocation dynamique donc le free() n'a pas lieu d’être

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Quel est l'intérêt de faire free (*pliste). Sans le free ça marcherait ?
    On aurait une fuite mémoire : les maillons ne seraient pas détruits. Seul le chainage le serait.

    Et aussi: pourquoi utiliser & puisque (*pListe)->lien est bien de type Liste *comme l'argument de viderListe....? (&((*pliste)->lien) est de type Liste)
    (*pListe)->lien est un Element *, donc du type Liste et la fonction demande un Liste * d'où la prise de l'adresse.

    Cette méthode risque d'être très coûteuse, à cause de la récursivité, si la liste est un peu longue

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Par défaut
    Ok ça marche!
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [phpBB] Utilisation de la fonction mail sous Free
    Par Tex-Twil dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 17
    Dernier message: 03/01/2025, 21h02
  2. utilisation malloc free
    Par Débutant_ASM dans le forum Débuter
    Réponses: 5
    Dernier message: 17/03/2010, 10h11
  3. utilisation du free sur un char*
    Par kase74 dans le forum Débuter
    Réponses: 10
    Dernier message: 30/01/2009, 19h02
  4. [phpMyVisites] Utilisation chez Free
    Par .:H:. dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 11/03/2008, 18h53
  5. Utiliser MySQL chez Free
    Par komoku dans le forum Installation
    Réponses: 3
    Dernier message: 26/01/2007, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo