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 :

taille adresse C++


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut taille adresse C++
    Bonjour,
    Je voudrais juste une confirmation
    Sur un processeur 32bits les adresses en C++ sont stockées sur 32 bits.
    Donc on peut stocker cette valeur dans un long ?
    Merci.

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    les tailles des adresses sont les tailles des pointeurs Le pointeurs sont faits justement pour stocker des adresses... Il est inutile (et dangeureux dans certaines mesures) de les stocker dans autre chose...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Sur un processeur 32bits les adresses en C++ sont stockées sur 32 bits
    C'est complétement dépendant de l'architecture.

    Donc on peut stocker cette valeur dans un long ?
    Il me semble qu'il y a un type standard pour ça ; à la manière de std::size_t pour les tailles.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut
    je dois faire correspondre la structure FILE avec une structure FILE_2 qui m'est propre.
    Je veut donc mettre l'adresse de FILE dans un champ de FILE_2 car pour l'utilisateur doit manipuler le type FILE_2 et ne peut en aucun cas le changer. La structure FILE_2 contenant un long...
    N'y a-t'il pas un "standard", pour les processeurs récents équipant les PC grand public et sous Windows par exemple (P IV, AThlon...)

  5. #5
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    Mais pourquoi ne le stockes tu pas simplement dans un void*? Ne peux tu pas modifier ton type FILE_2?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut
    Ouai c'est ca je ne peux pas modifier le type FILE_2

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu cherches le bon type alors c'est FILE*, pas un type entier.
    Si tu ne cherches pas le bon type alors tu cherches quoi au juste ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut
    Merci
    Pour la rapidité des réponses !!!
    Je vais laisser comme ca de toute facon je n'ai pas beaucoup le choix.

  9. #9
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Y'a intptr_t sinon je crois

  10. #10
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut

    Si tu ne peux pas modifier FILE_2, il n'y a rien que tu puisses faire. Tu es bloqué avec un design tout pourri. Et il ne te reste qu'à espérer de toujours avoir sizeof(FILE*) <= sizeof(long). A la limite, tu peux rajouter une assertion statique dans ton code. Et mettre en commentaire à côté (si jamais cela devait ne pas compiler) comme quoi quelqu'un a eu deux drôles d'idées de design (mettre un FILE* dans un long, et avoir une subtituabilité bourrine via un reinterpret_cast pour extraire le FILE * (si j'ai bien compris ce que tu as décris)).

    Il te faut aussi prier que les tailles soient bien égales sinon, d'une plateforme à l'autre, c'est le coup à ce que les données soient mal alignées et que tu n'extrais pas la bonne addresse. Un enum pourrait sauver la mise, mais il ne permettrait pas pour autant la substituabilité par reinterpret_cast<>.

    Des assertions statiques et des prières. C'est tout ce que tu as à ta disposition
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    En effet, un pointeur tient dans un long sous beaucoup de plate-formes 32bits et certaines plate-formes 64bits (notamment, PAS sous Win64), mais rien n'est garanti sans utiliser un type approprié (intptr_t standard, INT_PTR et sa bande sous Windows...).
    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.

  12. #12
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    (notamment, PAS sous Win64)
    Ah bon ?
    Il me semblait qu'un long faisait 64 bits avec GCC sur AMD64.

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

Discussions similaires

  1. Adresse case mémoire - taille max
    Par skealios dans le forum Langage
    Réponses: 4
    Dernier message: 09/07/2013, 09h56
  2. Réponses: 2
    Dernier message: 26/05/2010, 13h12
  3. Taille et adresse des segments
    Par Rémiz dans le forum Programmation d'OS
    Réponses: 7
    Dernier message: 04/11/2008, 00h30
  4. taille des adresses
    Par TabrisLeFol dans le forum Langage
    Réponses: 5
    Dernier message: 24/07/2007, 05h21
  5. [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

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