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 :

Pointeurs : que contiennent-ils ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut Pointeurs : que contiennent-ils ?
    Bonjour,

    Les pointeurs sont, à la base, des variables de type "adresse mémoire". Mais un pointeur, ne contient-il rien d'autre comme information? Je suppose que si, à commencer par la taille de la valeur pointée. Non? Sinon, impossible de parcourir un tableau correctement : il faut connaître la taille des sauts à effectuer...?

    Je suppose que jusqu'ici, j'ai bon.

    Mais les pointeurs ne contiennent-ils pas non aussi la taille totale de la zone allouée par malloc? Sinon, comment le "free" peut-il savoir ce qu'il doit libérer comme mémoire?

    Dans ce cas, pourquoi ne peut-on pas connaître la taille d'un tableau?

    Merci d'avance pour vos éclairages.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Un pointeur contient une adresse, rien d'autre.
    Citation Envoyé par gnulix
    Mais un pointeur, ne contient-il rien d'autre comme information? Je suppose que si, à commencer par la taille de la valeur pointée. Non? Sinon, impossible de parcourir un tableau correctement
    C'est une des raisons pour laquelle on passe toujours la taille du tableau (ainsi que l'adresse du premier élément) à une fonction manipulant un tableau.

    Citation Envoyé par gnulix
    Mais les pointeurs ne contiennent-ils pas non aussi la taille totale de la zone allouée par malloc? Sinon, comment le "free" peut-il savoir ce qu'il doit libérer comme mémoire?
    Non. malloc alloue en effet plus de mémoire que demandée pour enregistrer aussi les informations concernat la mémoire allouée (entre autres la taille) mais le pointeur retourné par malloc pointe sur la mémoire dont on a besoin.

  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
    Je suppose que si, à commencer par la taille de la valeur pointée. Non? Sinon, impossible de parcourir un tableau correctement : il faut connaître la taille des sauts à effectuer...?
    La taille de l'objet pointé est déterminé par le type du pointeur (pointeur sur int, ...). Le compilateur la connait. La taille des sauts à effectuer est calculée par le compilateur, pas par le contenu du pointeur.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    OK, merci!

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

Discussions similaires

  1. mettre ce que contienne des entry dans un dictionnaire
    Par nini_python dans le forum Tkinter
    Réponses: 7
    Dernier message: 11/07/2012, 01h23
  2. Que contiennent les index Non Cluster dans SQL 2005
    Par ygrim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/03/2008, 16h01
  3. classe qui ne s'instancie que comme pointeur??
    Par yashiro dans le forum C++
    Réponses: 37
    Dernier message: 07/04/2006, 07h18
  4. comment savoir ce que fait mon pointeur??
    Par elekis dans le forum C++
    Réponses: 9
    Dernier message: 30/11/2004, 12h42
  5. Réponses: 8
    Dernier message: 26/08/2004, 18h59

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