Maison  >  Article  >  développement back-end  >  Pourquoi une classe C vide a-t-elle une taille de 1 octet ?

Pourquoi une classe C vide a-t-elle une taille de 1 octet ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 18:49:29998parcourir

Why Does an Empty C   Class Have a Size of 1 Byte?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn