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

Visual C++ Discussion :

Alignement mémoire pour les structures.


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut Alignement mémoire pour les structures.
    Pour des besoins de test j'aurai besoin de créer des structures en mémoire qui auraient été créées par une machine qui a des règles d'alignements mémoire différents de celles de ma machine.

    La seule option qui semblerait convenir est "C++/génération de code/alignement des membres de la structure". On peut spécifier un alignement sur 1,2,8... octets. Mais il ne s'agit pas vraiment de ce que je veux. Il faudrait pouvoir utiliser l'alignement d'une "vieille" machine : une variable d'un type qui a une taille X doit être à une adresse multiple de X (si c'est une type simple, mais c'est tout ce que je veux).

    J'ai déjà du code pour me caler sur ces règles le but et de la valider, il me faudrait donc un autre moyen de générer ces structures.

    Si quelqu'un a une idée...

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    pour l'alignement il vaut mieux utiliser les directives pragma dans ton code.
    exemple alignement sur 1 byte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #pragma pack(push,1)
    // ma structure ici ...
    #pragma pack(pop)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    J'avais trouvé ce truc là mais ça me fais faire à la main l'alignement, ducoup le code que je veux valider ne l'est pas vraiment. Je peux toujours me louper dans un push ou autre. A moins que je n'ai pas compris comment on s'en sert.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    je ne comprends pas trop ton probleme ...
    un remarque néanmoins modifier l'alignement au niveau du projet est dangereux.
    l'alignement manuel tel qu'il est montré est la seule solution viable...


  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    En fait je vais devoir faire de la communication avec une machine qui a un alignement mémoire "à l'ancienne". Le projet est un peu complexe mais en gros j'ai un buffer et je sais quels types de variables sont présentes et dans quel ordre. Je caclule l'addresse de chaque var et hop.

    Il faudrait maintenant faire une validation avec un gros exemple où le buffer serait rempli de la même façon que par la machine avec laquelle je causerai.

    Si ce n'est pas possible je me contenterai d'exemples variés que je calculerai à la main, tantpis.

Discussions similaires

  1. surchage d'opérateur pour les structures
    Par Flow_75 dans le forum C++
    Réponses: 5
    Dernier message: 22/01/2009, 11h08
  2. std::fill vs memset pour les structures.
    Par zenetcalme dans le forum SL & STL
    Réponses: 17
    Dernier message: 14/10/2008, 21h36
  3. Allouer plus de mémoire pour les mises à jour.
    Par Empty_body dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 14/03/2008, 15h29
  4. Besoin d'aide pour les structures de données dynamiques
    Par aurelie689 dans le forum Pascal
    Réponses: 3
    Dernier message: 26/12/2007, 21h29
  5. Réponses: 6
    Dernier message: 24/03/2006, 18h24

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