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

Qt Discussion :

taille struct 32b et 64b


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 118
    Par défaut taille struct 32b et 64b
    je ne sais pas si c'est une question c ou qt ...

    j'ai les 2 structures suivantes qui ne me donnent pas les memes tailles selon que je suis en 32 ou 64bits... je ne comprends pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    typedef struct strucA {
    	qint64	val8;	
    } strucA;
     
    struct strucB {
    	qint32		val4;
    	strucA		tst;
    } strucB;
    cela me donne...

    32b

    sizeof (strucA) = 8
    sizeof (strucB) = 12


    64b

    sizeof (strucA) = 8
    sizeof (strucB) = 16 !!!


    comment avoir la meme taille dans ce cas la en 32 et 64b

    merci de votre aide

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Tu peux nous donner quelques infos sur ton système ( OS , compilateur , version de Qt ) ?

    G.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Par défaut
    Un OS 64b va aligner sa mémoire sur 64b alors qu'un OS 32b le fait sur 32b, d'où une "perte" de mémoire (qui est inutilisée).

    Cela doit provenir du fait que les "mots" envoyés au processeurs font 64bits

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 118
    Par défaut
    la je teste sur mac sous os x.6... il y a effectivement un probleme d'alignement . en faisant plus de test il semble que l'alignement de la structure se fait sur l'element le plus long de la structure en 64b parce que si je remplace le qint64 par uchar val8[8] la les tailles redeviennent les memes.

    Y a t'il une option compilateur qui permet de forcer un alignement sur 4bits.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 118
    Par défaut
    pas 4bits 4bytes... j'aligne plus moi meme

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par eric_vi Voir le message
    Y a t'il une option compilateur qui permet de forcer un alignement sur 4bits.
    Oui. Et même des pragma, mais je te le déconseille.
    En quoi c'est gênant pour toi????

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 118
    Par défaut
    j'ai essaye les pragma mais xcode n'aime pas trop et donne des vilains messages a la compilation...

    c'est tres genant parce que j'ai des structures que j'utilise en stockage disque qui comportent des qint64 donc selon que l'utilisateur travaille en 32 ou en 64 et qu'il rappelle la structure les tailles different et l'alignement change .... vilain plantage

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

Discussions similaires

  1. Savoir quelle version de windows (XP, Seven 32b, Seven 64b)
    Par Jean-Pierre49 dans le forum Contribuez
    Réponses: 4
    Dernier message: 17/06/2017, 16h58
  2. [XL-2013] compatibilité excel 2013 32b et 64b
    Par astrolane dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2015, 13h40
  3. ActiveX Acrobat AcroPDF XE5(32b) W7(64b)
    Par Eric.H dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 29/05/2014, 08h59
  4. C# dll 32b ou 64b
    Par Titifonky dans le forum C#
    Réponses: 1
    Dernier message: 09/01/2013, 23h15
  5. vector d'object struct de taille variable
    Par melleb dans le forum C++
    Réponses: 10
    Dernier message: 18/05/2009, 17h21

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