Sizeof bizarre

Résolu
cs_khayyam Messages postés 51 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 15 juillet 2005 - 3 août 2004 à 22:01
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005 - 7 août 2004 à 00:09
bonjour,

j'ai la structure suivante :
typedef struct
{
unsigned char sign1, sign2;
unsigned long size_totale, reserve,offset;

unsigned long size_entete, largeur, hauteur;
unsigned char nb_plans[2], deep_codage[2];
unsigned long method_comp, size_image, reso_ho, reso_ver, nb_coul_pal, nb_cou_imp;
} Header;

si vous comptez les champs ainsi que leur taille, vous trouverez un poids de 54 octets pourtant sizeof(Header) me sort 56 octets (sous windows). comment ça se fait ?

40 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
3 août 2004 à 23:36
oui, signé on considere juste le bits de poids fort comme celui du signe (1 pour negtif), c'est ca?
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
3 août 2004 à 23:38
Vi exact j'ai rien dis :)
Thx

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 août 2004 à 23:39
tout a fait. Quand on calcule, on fait les memes operations, la seule difference se situe au niveau d'interpreter le registre eflags derrire chaque operation, rien de plus.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
4 août 2004 à 00:06
J'ai une autre question qui n'a rien a voir. En fait j'ai plein de ptite question comme celle que je vais vous poser mais j'essaye de tout assimiler.

Parfois on rencontre des trucs du genre "C &" ca represente quoi exactement?

Et aussi, quand par exemple j'alligne mal m'a structure je vais avoir un truc du genre avec des blocs en octets :

char | float | chat -> 1octet | trou de 3 octets | 4 octets | Pas de trou | 1 octet | trou de 3 octets

C'est ca si je comprend bien ?

Par contre si j'aligne bien ma structure :

float | char | char -> 4 octets | 1 octet | 1 octet | trou de 2 octets

Donc c'est mieux car il y a moins de perte c'est ca ?

Shell
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
4 août 2004 à 00:10
oui

"C &" ? ta pas un exemple ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 00:14
y a un truc simple pour ne pas te tromper quand tu fais une structure, place les donnees par ordre de taille decroissant dans la structure, ainsi jamais de probleme de mauvais alignement.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
4 août 2004 à 00:17
Hum nan j'ai pas d'exemple prècis. C'est le & qui est mis après une varible ... dans une fonction par exemple.
int MaFonction( int MaVariable&, ...) {}
C'est un truc du genre si je me trompe pas.
J'ai vu ca quelque fois dans certains code.
Si j'en vois un je t'envoie un mp avec un exemple.

En tous cas merci a vous djl et BruNews.

Shell
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
4 août 2004 à 00:22
ca serait pas plutot le & avant une variable ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 00:23
Serait d'une reference dont tu parles, forme C++ du pointeur en quelque sorte.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
4 août 2004 à 00:25
:-)

Non Non,

djl> le & avant la variable je sais que c'est pour passer l'adresse de la variable.

BruNews> c'est pas non plus les reference. je sais ce que c'est ca.

Faudrait que je vous trouve un exemple....

Shell
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
4 août 2004 à 00:25
oui, ca permet d'eviter d'utiliser des pointeur, comme le passage d'argument par reference (par adresse)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
4 août 2004 à 00:26
a ok
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 00:28
Alors attendons l'exemple.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
4 août 2004 à 00:34
BruNews> Sage décision sinon vous en avez pour la toute nuit a enumérer toutes les possibilités ;)

En tous cas j'arrive pas a trouver d'exemple la. Je vais aller dormir et des que j'en trouve un je vous en fait part.
Merci encore et bonne nuit a tous les deux (BruNews, djl et Casper aussi :) )

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 00:38
IDEM.

ciao...
BruNews, Admin CS, MVP Visual C++
0
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
4 août 2004 à 22:02
Trés instructif, Merci à vous ;)

Le fait d'aligner les données en mémoire permet réellement un gain de temps et donc de performance ?

Dans le cas de la prog industrielle , je comprendrais, mais conseilleriais vous également de respecter cela pour tout type de programmation, exemple la gestion ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 22:11
Bien entendu que c'est valable partout. On ne peut pas dire ici je prog bien, ici je prog crade. On prog correctement toujours.

ciao...
BruNews, Admin CS, MVP Visual C++
0
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
4 août 2004 à 22:19
Ok c'est retenu

merci brunews
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 août 2004 à 15:33
Voila qu'on a pas attendu longtemps pour avoir une preuve de la necessite d'aligner correctement les donnees d'une structure:
http://www.cppfrance.com/forum.v2.aspx?ID=270806

ciao...
BruNews, Admin CS, MVP Visual C++
0
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
7 août 2004 à 00:09
Merci

Je ne doutais pas de ta parole brunews, ... ni celle de djl et de DeAtHCrAsH...

Personnellement j'apprend beaucoup de chose en vous lisant,

Continuez comme ca ;)

Bonne coutinuation ... vive cppfrance
0
Rejoignez-nous