Maison >développement back-end >C++ >Est-ce que `sizeof(void)` nous indique la taille du type void en C ou C ?

Est-ce que `sizeof(void)` nous indique la taille du type void en C ou C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 20:05:271059parcourir

Does `sizeof(void)` tell us the size of the void type in C or C  ?

Taille du vide insaisissable

Question :

Peut-on déterminer la taille du vide de type C ou C ? Considérez le code suivant :

void *p = malloc(sizeof(void));
Extension : Si sizeof(void) renvoie 1 dans GCC, le pointeur p s'incrémentera-t-il à 0x2346 après p si p détenait initialement 0x2345 ?

Réponse :

Le type vide manque fondamentalement de taille, ce qui rend l'expression sizeof(void) dénuée de sens et conduit à une erreur de compilation. En C , c'est strictement interdit.

Découverte inattendue :

Étonnamment, lors de la compilation en GNU C, sizeof(void) donne 1. Cependant, ce comportement est limité à GNU C et non observé en C ou autre implémentations.

Implications :

Malgré la valeur de retour inattendue dans GNU C, il est crucial de noter que void reste un type sans taille. Les pointeurs vers void, comme p dans l'exemple, sont de véritables pointeurs et peuvent être incrémentés comme n'importe quel autre pointeur. L'opération d'incrémentation dans la question d'extension se comportera comme prévu, p pointant vers la prochaine adresse mémoire disponible.

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