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 :

besoin de comprehension sur free() et pointeur


Sujet :

C

  1. #41
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Si ça sert : si tu ne le mets pas à NULL et que tu t'en ressert en oubliant de l'allouer il peut se passer tout et n'importe quoi et dans le pire des cas (pour le programmeur) il ne se passe rien sur le moment, puis plus tard le programme plante. Si le pointeur est mis à NULL dès que tu tentes de t'en servir s'en l'avoir allouer : SEGMENTATION FAULT, l'erreur est repérée immédiatement.
    Et surtout (en dehors des erreurs de programmation), ça te permet de tester si le pointeur est utilisé ou pas à un autre endroit dans ton programme. Typiquement dans une structure d'arbre binaire, les pointeurs gauche et droite des feuilles seront à NULL, et c'est comme ça que tu sauras que ce sont des feuilles.

  2. #42
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 112
    Points
    112
    Par défaut
    Pour conclure et j'en suis encore persuadé :

    Un bon free sur un pointeur est toujours suivi d'une affectation à NULL...

  3. #43
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fremen167 Voir le message
    Et surtout (en dehors des erreurs de programmation), ça te permet de tester si le pointeur est utilisé ou pas à un autre endroit dans ton programme.
    FAUX !!!

    (tel que tu l'as dit)


    Dans le cas de listes chaînées, c'est exact. Mais de manière générale, un pointeur modifié dans une fonction ne sera pas modifé dans la fonction appelante, sauf à lui avoir passé un "pointeur de pointeur"...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #44
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    FAUX !!!

    (tel que tu l'as dit)


    Dans le cas de listes chaînées, c'est exact. Mais de manière générale, un pointeur modifié dans une fonction ne sera pas modifé dans la fonction appelante, sauf à lui avoir passé un "pointeur de pointeur"...
    Mais je n'ai pas parlé de fonction appelante ou appelée. Et évidemment, si tu veux implémenter une fonction qui modifie une variable paramètre, tu la transmets par adresse (donc tu transmets un pointeur en C)... même si cette variable est un pointeur. En quoi est-ce contradictoire avec ce que j'ai écrit ?

  5. #45
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fremen167 Voir le message
    Typiquement dans une structure d'arbre binaire, les pointeurs gauche et droite des feuilles seront à NULL, et c'est comme ça que tu sauras que ce sont des feuilles.
    Cet exemple ne s'applique pas à la discussion en cours. Dans cet exemple, tu places volontairement une valeur particulière dans certains éléments pour pouvoir détecter les cas particulier de ces éléments. On nomme cela "valeur sentinelle" (qu'on trouve aussi pour les chaînes). Ici la valeur placée (NULL) est importante puisque plus tard on en viendra à la tester pour vérifier si on est dans le cas particulier (mais on peut aussi remplacer ce NULL par un flag que tu places dans ta feuille et que tu mets à "vrai" quand tu es dans une feuille).

    Dans ce topic, on est en train de discuter les avantages et inconvénients de mettre un pointeur à NULL sachant qu'on ne s'en servira plus après ; ou alors si on s'en ressert on écrasera ce NULL par autre chose (de valide)...

    Citation Envoyé par jeremy13 Voir le message
    Pour conclure et j'en suis encore persuadé :
    Un bon free sur un pointeur est toujours suivi d'une affectation à NULL...
    Oui, si tu en es persuadé tu as tout à fait la liberté de le faire. Ca ne mange pas de pain et si ça te rassure dans ta prog en te rendant plus performant c'est tout bénef pour tout le monde
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. POO - Operation de pointeur incorrect sur Free
    Par Diablo64 dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2009, 13h46
  2. Besoin d'aide sur les pointeurs
    Par amateurc dans le forum Ada
    Réponses: 5
    Dernier message: 03/06/2008, 14h58
  3. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 01h16
  4. [debutant] prob de comprehension sur pointeur **
    Par iznogoud36 dans le forum C
    Réponses: 10
    Dernier message: 14/09/2006, 13h13
  5. Besoin d'aide sur pointeur
    Par SebRs dans le forum C++
    Réponses: 2
    Dernier message: 18/05/2006, 10h21

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