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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe Lephay
"Cyrille "cns" Szymanski" a écrit dans le message de news:
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)...
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
"Cyrille "cns" Szymanski" <cns2@cns.invalid> a écrit dans le message de
news:Xns93DEC2F9C72F3cns2cnsinvalid@193.252.19.141...
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)...
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).
"Cyrille "cns" Szymanski" a écrit dans le message de news:
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)...
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
Gabriel Dos Reis
"Cyrille "cns" Szymanski" writes:
| 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.
| (en C par exemple elle l'est je crois) ?
un struct vide n'existe pas en C, donc la question ne se pose pas.
| Est-ce pour que le pointeur this ait toujours un sens ?
Pour tout objet, oui. Par définition.
| Une classe est-elle toujours de taille non nulle ?