Maison > Article > développement back-end > Pourquoi une classe C vide a-t-elle une taille de 1 octet ?
Pourquoi la taille d'une classe C vide n'est-elle pas nulle ?
Malgré son vide apparent, une classe vide en C occupe un espace non -taille zéro. La norme interdit explicitement aux objets et à leurs classes correspondantes d'avoir une taille de 0. Cette restriction découle de la nécessité d'empêcher des objets distincts de partager la même adresse mémoire.
Prenons l'extrait de code suivant comme exemple :
<code class="cpp">#include <iostream> class Test { }; int main() { std::cout << sizeof(Test); return 0; }</code>
Contrairement à votre intuition initiale selon laquelle la sortie serait 0, elle renverra en réalité 1. Ce comportement est attribué à la règle de la norme interdisant les objets de taille nulle.
La raison sous-jacente de cette règle est de garantir que les objets distincts ont des adresses mémoire uniques. Ceci est crucial pour une identification et une manipulation correctes des objets. Si les objets pouvaient avoir une taille de 0, il serait possible que deux objets distincts occupent le même emplacement mémoire. Cela entraînerait des conséquences imprévisibles et potentiellement désastreuses dans votre programme.
Par conséquent, même si une classe vide ne peut contenir aucun membre de données visible, elle a toujours une taille minimale de 1 octet afin de maintenir le zéro de la norme. -interdiction de taille et garantir l'intégrité de l'allocation de mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!