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).
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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