C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

sizeof(class)

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Cyrille cns Szymanski
Guest





PostPosted: Thu Aug 21, 2003 5:10 pm    Post subject: sizeof(class) Reply with quote



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





PostPosted: Thu Aug 21, 2003 5:23 pm    Post subject: Re: sizeof(class) Reply with quote



"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





PostPosted: Thu Aug 21, 2003 5:30 pm    Post subject: Re: sizeof(class) Reply with quote



"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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.