Salut
Que fait au juste la directive #pragma pack() ???
Merci
Salut
Que fait au juste la directive #pragma pack() ???
Merci
Sous Visual C++, elle permet de régler l'alignement mémoire (1, 2, 4 ou 8 octets).
Ces cool merci
mais en quoi consiste l'allignement de la memoire ??? et quand est-ce indispensable???
encore merci
Ca consiste à aligner les membres d'une structure sur un certain "pas" d'octets, pour optimiser les accès mémoires.
Exemple parlant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 // Aligné par défaut sur 4 octets struct Padded { char c; int i; short s; }; // Aligné sur 1 octet (= pas d'alignement) #pragma pack(push) #pragma pack(1) struct UnPadded { char c; int i; short s; }; #pragma pack(pop) cout << sizeof(Padded) << "octets" << endl; cout << sizeof(UnPadded) << "octets" << endl;Exemple typique d'utilisation indispensable : si tu vas faire une lecture bit à bit d'une telle structure dans un fichier. Avec un alignement sur 4 octets, tu vas coller 7 octets dans une structure qui en fait 12, les valeurs seront incohérentes.Envoyé par Sortie
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager