Structure d’allocation de mémoire

struct node{ int data; struct node * next; }; 

Comment le compilateur alloue-t-il de la mémoire pour le membre “next” lorsque nous n’avons pas encore alloué de mémoire pour la structure “struct node”

next member est un pointeur – une variable qui contiendra une adresse de node , pas de node lui-même. Tous les pointeurs de type de données ont généralement la même taille, il est donc suffisant pour le compilateur de savoir que c’est un pointeur qui peut calculer sa taille.

Le membre suivant est un pointeur. Les pointeurs ont tous la même taille, le compilateur n’a donc pas besoin de savoir quelle est la taille de la prochaine étape.

Ensuite, il n’ya qu’un pointeur, c’est donc une valeur de taille fixe dans chaque machine.

cela se produit de manière dynamic lorsque vous utilisez malloc. Sinon rien n’est atsortingbué. Le compilateur n’atsortingbue que les 4 octets du pointeur qui contiendra l’adresse de la mémoire allouée “à être”. Si vous essayez d’accéder au pointeur sans allouer de mémoire, le code va planter (vous aurez alors access à une mémoire invalide dans le programme).