« Programmation C/Types avancés » : différence entre les versions

Contenu supprimé Contenu ajouté
m Révocation des modifications de 80.200.185.114 (retour à la précédente version de Tavernierbot)
Ligne 87 :
En fait, les compilateurs insèrent quasi toujours des octets entre les champs pour pouvoir les ''aligner'' sur des adresses qui correspondent à des mots machines. C'est en fait dû à une limitation de la plupart des processeurs, qui ne peuvent lire des mots de plus d'un octet que s'ils sont alignés sur un certain adressage. En fait, toutes les variables déclarées suivent cette règle : aussi bien les variables locales aux fonctions, les champs de structures, les paramètres de fonctions, etc.
 
CetCe comportement est en fait, non seulement dépendant de l'architecture, mais aussi du compilateur. Ce dernier possède en général des options qui permettent de paramétrer avec quelle finesse se fera l'alignement. Ces options sont bien évidemment spécifiques et pas du tout portables.
 
Dans le cas d'un ordinateur dit « 32 bits », par exemple (i.e. dont le processeur central utilise des ''registres'' de 32 bits), il est courant que la mémoire ne puisse être adressée directement que par « bloc » de 32 bits. En se représentant la mémoire comme un tableau continu, on peut tracer le dessin suivant: