| View previous topic :: View next topic |
| Author |
Message |
Cyrille cns Szymanski Guest
|
Posted: Thu Aug 21, 2003 5:10 pm Post subject: sizeof(class) |
|
|
Si je définis une classe ou structure T vide, j'ai (BC++5.5) sizeof(T)==
8. Si par contre je lui ajoute un unique membre char, la taille passe à
1.
Pourquoi la taille d'une classe ou structure vide n'est pas nulle (en C
par exemple elle l'est je crois) ? Est-ce pour que le pointeur this ait
toujours un sens ?
Une classe est-elle toujours de taille non nulle ?
Y-a-t-il une valeur par défaut ?
Note: Je suis conscient que sizeof d'une structure est généralement
supérieur à la somme des sizeof des membres, et ce pour des questions
d'alignement/optimisation. De même que généralement il est alloué plus de
mémoire que nécessaire. Là n'est pas ma question.
--
_|_|_| CnS
_|_| for(n=0;b;n++)
_| b&=b-1; /*pp.47 K&R*/
|
|
| Back to top |
|
 |
Christophe Lephay Guest
|
Posted: Thu Aug 21, 2003 5:23 pm Post subject: Re: sizeof(class) |
|
|
"Cyrille "cns" Szymanski" <cns2 (AT) cns (DOT) invalid> a écrit dans le message de
news:Xns93DEC2F9C72F3cns2cnsinvalid (AT) 193 (DOT) 252.19.141...
| Quote: | Une classe est-elle toujours de taille non nulle ?
|
Oui, pour preserver une forme d'identité (de manière à ce que des objets
différents aient bien une adresse différente, indépendemment de leur
taille)...
| Quote: | Y-a-t-il une valeur par défaut ?
|
1 est bien entendu le minimum. Après, la valeur réelle sépend des
contraintes d'alignement (ce qui peut expliquer le 8 que tu obtiens).
Chris
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Thu Aug 21, 2003 5:30 pm Post subject: Re: sizeof(class) |
|
|
"Cyrille "cns" Szymanski" <cns2 (AT) cns (DOT) invalid> writes:
| Quote: | Pourquoi la taille d'une classe ou structure vide n'est pas nulle
|
parce qu'un objet occupe de la mémoire et deux objets différents
doivent avoir des addresses différentes.
| Quote: | (en C par exemple elle l'est je crois) ?
|
un struct vide n'existe pas en C, donc la question ne se pose pas.
| Quote: | Est-ce pour que le pointeur this ait toujours un sens ?
|
Pour tout objet, oui. Par définition.
| Quote: | Une classe est-elle toujours de taille non nulle ?
|
Oui.
| Quote: | Y-a-t-il une valeur par défaut ?
|
Non. Il faut voir la doc du compilo.
-- Gaby
|
|
| Back to top |
|
 |
|