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 :

Pointeur Null pointe où ?


Sujet :

C

  1. #1
    Blue_Strike
    Invité(e)
    Par défaut Pointeur Null pointe où ?
    bonsoir,

    tout est écrit dans le titre si j'initialise un poiteur sur NULL, il pointe où réellement sur la mémoire?

    merci..

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Blue_Strike
    tout est écrit dans le titre si j'initialise un poiteur sur NULL, il pointe où réellement sur la mémoire?
    Il n'y a pas de réponse portable à cette question à part 'nulle part'. Un pointeur valant NULL ne peut pas être déréférencé sous peine d'invoquer un comportement indéfini.

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Personnellement, je considère l'initialisation d'un pointeur à NULL comme une manière de dire "la valeur contenue dans ce pointeur ne correspond pas à une adresse valable". Par conséquent, ce pointeur de doit pas être déférencé avant de recevoir une adresse valide.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Blue_Strike
    Invité(e)
    Par défaut
    bonsoir,

    Emmanuel Delahaye a écrit :
    Il n'y a pas de réponse portable à cette question à part 'nulle part'. Un pointeur valant NULL ne peut pas être déréférencé sous peine d'invoquer un comportement indéfini.
    mais si tu choisi la réponse 'nulle part' c'est comme tu as affecté la valeure 'vide' à une variable booléenne qui ne supporte que 0 ou 1 (vrai ou faux) autrement dit, on connait tous que 'vide' ou 'nulle part' n'exsite pas dans un domaine numérique.. ou bien 0 ou bien 1.

    mujigka a écrit :
    Personnellement, je considère l'initialisation d'un pointeur à NULL comme une manière de dire "la valeur contenue dans ce pointeur ne correspond pas à une adresse valable". Par conséquent, ce pointeur de doit pas être déférencé avant de recevoir une adresse valide.
    oui et non !
    enfait ce poiteur ne doit pas être déférencé avant de recevoir une adresse valide. Mais le faite que je considère l'initialisation d'un pointeur à NULL comme une manière de dire "la valeur contenue dans ce pointeur ne correspond pas à une adresse valable" alors là ce n'est vraiment necesaire que l'adresse affectée est non valable, d'où le but de ma question

    je vous remercie pour votre réponse portable, et votre avis personnel, et je reformule ma question : si on affecte NULL à un pointeur, et on nous demande de mettre un X sur l'endroit où il pointe sur la zone mémoire, je mettrai où exactement le X, et pourquoi ?


    amicalement,
    ++

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Blue_Strike
    mais si tu choisi la réponse 'nulle part' c'est comme tu as affecté la valeure 'vide' à une variable booléenne qui ne supporte que 0 ou 1 (vrai ou faux) autrement dit, on connait tous que 'vide' ou 'nulle part' n'exsite pas dans un domaine numérique.. ou bien 0 ou bien 1.
    Ou là ! Les pointeurs n'ont rien à voir avec les 'domaines numériques ou les maths traditionnelles... Ce sont des pointeurs, c'est tout. Leur valeur est soit valide (adresse d'une variable, retour de malloc() ou de fopen(), valeur d'un pointeur valide), soit invalide (NULL), soit indéterminée. C'est tout.
    enfait ce poiteur ne doit pas être déférencé avant de recevoir une adresse valide. Mais le faite que je considère l'initialisation d'un pointeur à NULL comme une manière de dire "la valeur contenue dans ce pointeur ne correspond pas à une adresse valable" alors là ce n'est vraiment necesaire que l'adresse affectée est non valable, d'où le but de ma question
    Tu peux le refaire en français de base, avec une concordance des temps cohérente...
    je vous remercie pour votre réponse portable, et votre avis personnel, et je reformule ma question : si on affecte NULL à un pointeur, et on nous demande de mettre un X sur l'endroit où il pointe sur la zone mémoire, je mettrai où exactement le X, et pourquoi ?
    Tu es têtu. On se tue à dire que si un pointeur vaut NULL il ne doit pas être déréférencé (et tu l'as même toi même rappelé). Ta question n'a donc aucun sens, car <<si on affecte NULL à un pointeur, et on nous demande de mettre un X sur l'endroit où il pointe sur la zone mémoire>> signifie très exactement déréférencer. Comme déjà indiqué, le comportement est indéterminée, et il n'y a pas de réponse portable.

    Ca peut ne rien faire, détruire un vecteur à l'adresse physique 0, déclencher une exception, formater ton disque dur, envoyer les photos de toi en string léopard à ta mère...

    En gros, on te dit 'rouler à contre sens sur l'autoroute, c'est mal' et tu demandes ce qui se passe si on le fait...

    Ne le fait pas, c'est tout.

  6. #6
    Blue_Strike
    Invité(e)
    Par défaut
    bonsoir,

    euh, tu ne m'as pas bien compris..j'explique plus

    Emmanuel Delahaye a écrit :
    Ou là ! Les pointeurs n'ont rien à voir avec les 'domaines numériques ou les maths traditionnelles... Ce sont des pointeurs, c'est tout. Leur valeur est soit valide (adresse d'une variable, retour de malloc() ou de fopen(), valeur d'un pointeur valide), soit invalide (NULL), soit indéterminée. C'est tout.
    +1, mais si tu as par exemple un pointeur qui pointe sur un char, cette adresse du pointeur est sauvegardée où dans la mémoire ? Et dans le cas de NULL que vaut cette valeure ? pas plus clair que ça

    Emmanuel Delahaye a écrit :
    Tu es têtu. On se tue à dire que si un pointeur vaut NULL il ne doit pas être déréférencé (et tu l'as même toi même rappelé). Ta question n'a donc aucun sens, car <<si on affecte NULL à un pointeur, et on nous demande de mettre un X sur l'endroit où il pointe sur la zone mémoire>> signifie très exactement déréférencer. Comme déjà indiqué, le comportement est indéterminée, et il n'y a pas de réponse portable.
    sûrement y a quelque chose sauvegardée dans l'endroit où on sauvgarde une adresse valable, non ? c'est ce que je cherche..

    En gros, on te dit 'rouler à contre sens sur l'autoroute, c'est mal' et tu demandes ce qui se passe si on le fait...
    je demande pas 'ce qui se passe si l'on fait..' mais plutôt 'quand l'autoroute est vide, c'est réalisable de rouler à contre sens ?'

    Ca peut ne rien faire, détruire un vecteur à l'adresse physique 0, déclencher une exception, formater ton disque dur, envoyer les photos de toi en string léopard à ta mère...
    je veux connaitre un truc, et je m'enfoue de se qui se passe après..
    et si tu caches de photo avec un string de léopard sur ton PC, vaut mieux que tu les efface, de crainte de tomber dans le cas que tu as déjà cité ; perso, je n'ai pas ce genre d'images, donc rien à avoir avec moi ...


    ++

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Tu es têtu. On se tue à dire que si un pointeur vaut NULL il ne doit pas être déréférencé (et tu l'as même toi même rappelé). Ta question n'a donc aucun sens, car <<si on affecte NULL à un pointeur, et on nous demande de mettre un X sur l'endroit où il pointe sur la zone mémoire>> signifie très exactement déréférencer. Comme déjà indiqué, le comportement est indéterminée, et il n'y a pas de réponse portable.
    Je pense que quand il parle de mettre un X, il veut parler schématiquement.

    En gros si on représente la mémoire allouée au programme par un tableau sur un papier. Quelle serait la case qui contiendrait NULL.

    C'est ça qu'il faut comprendre ou pas ?

  8. #8
    Blue_Strike
    Invité(e)
    Par défaut
    re,

    Skyrunner a écrit :
    Je pense que quand il parle de mettre un X, il veut parler schématiquement.

    En gros si on représente la mémoire allouée au programme par un tableau sur un papier. Quelle serait la case qui contiendrait NULL.

    C'est ça qu'il faut comprendre ou pas ?
    exactement ça, je vois pas pour quoi ils n'ont pas compris le problème malgré qu'il est bien posé !


    ++

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Blue_Strike
    +1, mais si tu as par exemple un pointeur qui pointe sur un char, cette adresse du pointeur est sauvegardée où dans la mémoire ?
    Si tu parles de l'adresse du char, elle est dans le pointeur. C'est fait pour.

    http://emmanuel-delahaye.developpez.....htm#pointeurs

    Et dans le cas de NULL que vaut cette valeure ? pas plus clair que ça
    Elle vaut NULL. Aussi simple que ça.

    Dans le contexte pointeur, la norme dit que c'est la valeur 0 ou (void*)0. Attention, ça ne signifie nullement que la valeur binaire soit all-bit to 0. Ca dépend de l'implémentation, c'est pour ça qu'on ne peut pas répondre de façon générale. De toutes façons, cette question n'a pas d'intérêt, puisqu'une fois de plus, on ne doit pas déférérencer un pointeur valant NULL. C'est écrit noir sur blanc dans la norme qui définit le langage C. (C'est un comportement indéfini, autrement dit un bug).
    sûrement y a quelque chose sauvegardée dans l'endroit où on sauvgarde une adresse valable, non ? c'est ce que je cherche..
    C'est pas très clair... "l'endroit où on sauvgarde une adresse valable" c'est une variable de type pointeur... Tu veux savoir quelle est la valeur exacte ? On en sait rien et on s'en tape ...
    je demande pas 'ce qui se passe si l'on fait..' mais plutôt 'quand l'autoroute est vide, c'est réalisable de rouler à contre sens ?'
    Le problème est qu'on a aucun moyen de savoir si l'autoroute est vide.
    je veux connaitre un truc, et je m'enfoue de se qui se passe après..
    Et c'est quoi ce truc ?

  10. #10
    Blue_Strike
    Invité(e)
    Par défaut
    bonsoir,

    Et c'est quoi ce truc ?
    => titre de discussion

    Bon c'est plus convainquant comme ça enfait j'ai compris de quoi il s'agit et comment se comporte les pointeurs dependant des adresses..

    Merci pour tous ceux qui ont participé à la discussion.

    cordialement,
    ++

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Blue_Strike
    => titre de discussion
    Alors je t'ai déjà répondu. Sur le plan fonctionnel, il pointe 'nulle part'. Il est dit 'invalide'. L'avantage, c'est que c'est une valeur testable et qu'on a le droit d'écrire if (p != NULL), voire même if (p) (mais je ne le fais pas, trop laid).

  12. #12
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Skyrunner
    Je pense que quand il parle de mettre un X, il veut parler schématiquement.

    En gros si on représente la mémoire allouée au programme par un tableau sur un papier. Quelle serait la case qui contiendrait NULL.
    C'est bien ce que j'avais compris. La représentation schématique de la mémoire sous forme de tableau est une abstraction et NULL est une abstraction de "Nul part", ou "Non valide".

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  13. #13
    Blue_Strike
    Invité(e)
    Par défaut
    bonsoir,

    Emmanuel Delahaye a écrit :
    Dans le contexte pointeur, la norme dit que c'est la valeur 0 ou (void*)0. Attention, ça ne signifie nullement que la valeur binaire soit all-bit to 0. Ca dépend de l'implémentation, c'est pour ça qu'on ne peut pas répondre de façon générale.
    la phrase en rouge dépend de la technologie de la mémoire elle meme. Enfait il est 'interdit' de déférérencer un pointeur valant NULL (puisqu'il est Null ) ; Mais en réalité, losque le pointeur vaut Null, il pointe sur une zone spéciale de la mémoire dépendant de sa technologie comme j'avais dis (d'où à lire la phrase rouge) .. cette zone n'est pas utilisable comme une simple case mémoire, elle est morte, et seul le constructeur connaît son emplacement.. c'est pourquoi on ne doit jamais déférérencer un pointeur valant NULL



    ++

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Concernant la valeur du pointeur, matériellement, ça peut être n'importe quoi.
    Mais logiciellement, elle correspond à zéro, ce qui explique que if(p) marche.

    PS: Un pointeur NULL peut ne même pas pointer sur de la mémoire. Sur une architecture à un seul plan (les 68000, par exemple, et surtout pas les Intel ou Zilog), la mémoire peut n'occuper qu'une seule partie de l'espace d'adressage.
    Et, je ne parle même pas encore de la mémoire virtuelle, qui peut mettre n'importe quoi à l'"adresse" d'un pointeur NULL...

    PS: Skyrunner: Aucune case ne "contiendrait" NULL. Mais il peut très bien y avoir une case "spéciale" ou non à l'adresse NULL, ou bien pas de case du tout (que du vide, entrainant non pas une AccessViolation/SegFault mais un truc du genre Bus Error)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Blue_Strike
    la phrase en rouge dépend de la technologie de la mémoire elle meme. Enfait il est 'interdit' de déférérencer un pointeur valant NULL (puisqu'il est Null ) ; Mais en réalité, losque le pointeur vaut Null, il pointe sur une zone spéciale de la mémoire dépendant de sa technologie comme j'avais dis (d'où à lire la phrase rouge) .. cette zone n'est pas utilisable comme une simple case mémoire, elle est morte, et seul le constructeur connaît son emplacement.. c'est pourquoi on ne doit jamais déférérencer un pointeur valant NULL
    NULL n'étant pas une adresse valide, il ne risque pas de pointer sur quoi que ce soit de tangible, en tout cas du point de vue du C. Les détails physiques ne nous concerne pas, de toutes façons, on y a pas accès de façon portable.

    Il faut prendre un peu de hauteur. Le C est un langage de haut niveau. OK, pas très haut, mais suffisamment pour que les aspect matériels soient complètement 'abstractisés'. Alors STP, ne viens pas nous parler de la mémoire physique sur un forum C. Ca n'existe pas.

    La vrai seule et unique raison pour laquelle il ne faut pas déréférencer un pointeur valant NULL, c'est qu'il est écrit dans la norme que ça provoque un comportement indéfini. C'est tout. Ca n'a strictement rien à voir avec la mémoire physique ou le système. Le C est indépendant de la machine réelle. Il faut arriver à se mettre ça dans le crane.

    C != Assembleur. OK ?

  16. #16
    Blue_Strike
    Invité(e)
    Par défaut
    bonjour,

    le C est un langage plus haut niveau que assembleur, ça c'est clair, de façon que les aspect matériels sont complètement abstractisés! bon d'accord..

    Emmanuel Delahaye a écrit :
    La vrai seule et unique raison pour laquelle il ne faut pas déréférencer un pointeur valant NULL, c'est qu'il est écrit dans la norme que ça provoque un comportement indéfini.
    je suis 100% daccord avec la NON déférenciation d'un pointeur valant NULL. La norme le dit, moi j'ai pas dis le contraire, et plutôt tous le monde le sait !!! ça ne sert à rien de la répéter chaque fois.

    il se peut que j'ai mal choisi le thème de Forum (C) où je devrai poster ma discussion, mais ça ne veut pas dire que je n'étudis pas le comportement du compilateur C. Enfait c'est pas le langage C qui me gêne, je me concentre plus sur le compilateur C et sa gestion de mémoire.. le soft (code) ça n'a rien à avoir dans ce problème puisque if(p) fonctionne très bien

    Emmanuel Delahaye a écrit :

    C != Assembleur
    oui c'est différent, mais malgré ça c'était un bon exemple ! Médinoc a bien compris le soucis
    les motorola 68000 peuvent adresser sur 24bit (ya les 8 derniers bits hinébiés), mais parfois, la mémoire n'utilise que 16bits du poids faible (contrainte d'éspace mémoire limite)..
    bon comme ça on s'éloigne un peu du C restons sur le compilateur C

    c'est chaude encore une fois cette discussion

    merci pour vos participations
    ++

  17. #17
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Blue_Strike
    il se peut que j'ai mal choisi le thème de Forum (C) où je devrai poster ma discussion,
    Non, le forum était adéquate et tu as eu ta réponse. Je ne vois pas ce que tu cherches de plus.
    mais ça ne veut pas dire que je n'étudis pas le comportement du compilateur C. Enfait c'est pas le langage C qui me gêne, je me concentre plus sur le compilateur C et sa gestion de mémoire.. le soft (code) ça n'a rien à avoir dans ce problème puisque if(p) fonctionne très bien
    C'est pas très clair. Qu'est-ce que le compilateur a à voir avec ta question ? Et puis il n'y a pas 'un' compilateir C. Il y a des dizaines, et ils ont tous un comportement différent.
    • Selon le processeur cible
    • Selon le système
    • Selon la version du langage...

    En plus chaque compilateur avec des réglages qui ajustent le comportement...

    De quel compilateur parles-tu et avec quels réglages ?

    Tu as une nouvelle question ?

  18. #18
    Blue_Strike
    Invité(e)
    Par défaut
    bonsoir,

    Emmanuel Delahaye a écrit :
    C'est pas très clair. Qu'est-ce que le compilateur a à voir avec ta question ? Et puis il n'y a pas 'un' compilateir C. Il y a des dizaines, et ils ont tous un comportement différent.
    Selon le processeur cible
    Selon le système
    Selon la version du langage...
    En plus chaque compilateur avec des réglages qui ajustent le comportement...

    De quel compilateur parles-tu et avec quels réglages ?
    oui biensur, je précise..

    - IDE : turbo C++ v4.5 (sous win biensur)
    - OS : win XP SP2
    - j'ai rien changé comme réglages, il est installé par défaut..

    ++

  19. #19
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Et /dev/null c'est un trou noir ?

  20. #20
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par |PaRa-BoL
    Et /dev/null c'est un trou noir ?
    En quelque sorte, oui. Ce qui tombe dedans n'en ressort jamais...

    (Quoique la théorie des trous noirs implique celle des fontaines blanches...)

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2006, 09h13
  2. [PORT COM] RS485 et pointeur null...
    Par floanne dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 20/02/2006, 11h00
  3. get => pointeur null apres fermeture d'une sous-fenetre
    Par gorgonite dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 11/02/2006, 21h42
  4. [Info][Mémoire] utilisée pour un pointeur null
    Par thomas_strass dans le forum Langage
    Réponses: 14
    Dernier message: 04/11/2004, 12h48
  5. Réponses: 4
    Dernier message: 06/04/2004, 21h57

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