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

Langage C++ Discussion :

Taille mémoire d'un pointeur ?


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Robxley
    Homme Profil pro
    Docteur ingénieur traitement d'image
    Inscrit en
    Mai 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Docteur ingénieur traitement d'image

    Informations forums :
    Inscription : Mai 2009
    Messages : 158
    Par défaut Taille mémoire d'un pointeur ?
    Salut,

    Ma question est dans le titre mais je vais développer un peu histoire d'être un peu plus claire.

    Pour des systèmes embarqués souvent on possède un nombre limité voir très limité de mémoire pour l'exécution d'un programme.
    Et donc une façon d'économiser de la mémoire est d'utiliser des pointeurs.

    Oui certes mais est-ce valable dans tous les cas ? Une adresse (pointeur) est codé en combien d'octet ? Par ce que si l'adresse prend plus de place que le type de la variable ba c'est pas très malin.

    Exemple idiot mais exemple quant même :

    Si je fais un pointeur sur un char codé sur 1 octet à priori et que mon pointeur prend 2 octet en mémoire mieux vaut l'utiliser (dans des fonction par ex) par passage par valeur que par adresse.

    Au passage même question pour les références (mêmes si je m'en sert pas dans mon appli C, mais juste par curiosité, vilain défaut je sais )

    Si quelqu'un a une idée.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Robxley Voir le message
    Et donc une façon d'économiser de la mémoire est d'utiliser des pointeurs.
    Mouais, c'est discutable : une meilleure façon d'économiser la mémoire est plutôt d'utiliser des variables globales, des registres I/O du µC, d'optimiser les booléens sur un seul bit (=> 8 booléens par octet), et de préférer les traitements in place plutôt que de travailler sur des copies.
    Ce n'est hélas pas le fait de passer quelques pointeurs qui va changer la face de ton programme et diminuer son footprint : souvent, tu es obligé de repenser certains algos dans l'optique de bouffer le moins de mémoire possible.

    Citation Envoyé par Robxley Voir le message
    Une adresse (pointeur) est codé en combien d'octet ?
    Elle est en général codée sur un mot-machine, donc 16 bits sur une machine 16 bits et 32 bits sur une machine 32 bits.
    Toutefois, certaines plate-formes ont des spécificités : par exemple, beaucoup de µC 8 bits utilisent des pointeurs 16 bits, des sytèmes 16 bits utilisent des pointeurs 20, 24 ou 32 bits, etc.
    Le seul moyen d'être certain de ça, c'est de regarder le résultat d'un sizeof(void*). Sauf cas particuliers, cela renvoie le nombre d'octets utilisés par un pointeur.

    Citation Envoyé par Robxley Voir le message
    Si je fais un pointeur sur un char codé sur 1 octet à priori et que mon pointeur prend 2 octet en mémoire mieux vaut l'utiliser (dans des fonction par ex) par passage par valeur que par adresse.
    Sauf si tu as besoin de le modifier : dans un tel cas, passer par adresse ou référence est obligatoire.
    Toutefois, ceci n'affecte que la pile, et non pas la mémoire vive "normale" disponible pour ton programme.

    Citation Envoyé par Robxley Voir le message
    Au passage même question pour les références (mêmes si je m'en sert pas dans mon appli C, mais juste par curiosité, vilain défaut je sais )
    D'un point de vue "taille des données poussées sur la pile", passer par référence ou par adresse revient très exactement au même. La différence, est qui est non-négligeable, est que le contrôle d'une référence est bien plus strict que le contrôle d'une adresse.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Comme Mac Lak, je pense que tu te poses une mauvaise question. Rien à rajouter de plus à ce qu'il dit. Effectivement, la taille d'un pointeur n'est pas garantie par la norme C++ mais spécifique à la plateforme.
    Si tu veux quand même t'amuser, tu peux regarder le tutoriels de Alp sur les classes traits (et politiques). Il montre l'exemple d'un CallTraits. Ou carrément piocher dans Boost Call Trait et call_traits<T>::param_type dont j'imagine il s'est inspiré.

  4. #4
    Membre éprouvé Avatar de Robxley
    Homme Profil pro
    Docteur ingénieur traitement d'image
    Inscrit en
    Mai 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Docteur ingénieur traitement d'image

    Informations forums :
    Inscription : Mai 2009
    Messages : 158
    Par défaut
    C'est tout de suite un peu moins flou et abstrait.

    Reste à méditer sur tout ca quant même un petit peu

    Merci pour toutes ces réponses biens précises.

    D'ailleurs ça vaut de mettre la discussion en résolue

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

Discussions similaires

  1. Taille mémoire d'un pointeur
    Par sammedhi21 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 26/03/2015, 19h09
  2. [info] taille des adresses des pointeurs Java
    Par TabrisLeFol dans le forum Général Java
    Réponses: 11
    Dernier message: 14/02/2006, 13h24
  3. Objets et taille mémoire
    Par programan dans le forum C++
    Réponses: 4
    Dernier message: 15/09/2005, 14h08
  4. Réponses: 3
    Dernier message: 28/06/2005, 09h07
  5. [JVM] Connaitre la taille mémoire utilisé par les dif classe
    Par sur_uix dans le forum Général Java
    Réponses: 4
    Dernier message: 18/09/2003, 09h17

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