Maison >développement back-end >C++ >Pourquoi `sizeof(void)` n'est-il pas valide en C, mais est évalué à 1 dans GCC ?
Comprendre la taille du vide
En programmation C, le mot clé void signifie un type de données qui n'a pas de taille. Cette propriété particulière le rend inéligible aux déclarations de variables ou aux tâches d'allocation de mémoire.
Erreur de compilation : allocation de pointeur vide
L'extrait de code que vous avez fourni :
void *p = malloc(sizeof(void));
entraînerait une erreur de compilation car sizeof(void) est une expression invalide en C. Le type void ne contient aucune information de taille, rendant cette opération indéfinie et donc rejetée par le compilateur.
Sizeof (void) dans GCC : une exception
Étonnamment, l'expression sizeof(void) est compilée dans le compilateur GNU C (GCC). Il est évalué à 1, indiquant un seul octet de mémoire. Cependant, ce comportement n'est pas standard et varie selon les différents compilateurs et architectures.
Incrémentation du pointeur avec pointeur vide
Votre question sur l'incrémentation de p avec p soulève un concept intéressant. Puisque void n’a pas de taille, l’opération p n’a plus de sens. Le pointeur p ne pointe vers aucun type de données ou valeur spécifique, donc l'incrémenter n'aurait aucun effet sur sa valeur.
En résumé, void en C est un type de données sans taille et ne peut pas être utilisé pour la mémoire allocation ou déclarations de variables. L'expression sizeof(void) n'est généralement pas valide, mais peut se comporter différemment dans des compilateurs spécifiques comme GCC. En raison de son manque de taille, tenter d'incrémenter un pointeur vide avec p n'a aucun résultat significatif.
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!