struct node{
int data;
struct node * next;
};
How does the compiler allocate memory for "next" member in when we have not yet allocated memory for the structure "struct node"
struct node{
int data;
struct node * next;
};
How does the compiler allocate memory for "next" member in when we have not yet allocated memory for the structure "struct node"
next
member is a pointer - a variable that will contain an address of node
, not node
itself. All data type pointers are usually of the same size so it's enough for the compiler to know that it's a pointer to be able to compute its size.
The member next is a pointer. Pointers are all the same size, so the compiler does not need to know how big the thing that next may point to is.
Next is only a pointer so it is a fixed size value in every machine, it'll just add int+pointer sizes + padding and allocate node struct
it happens dynamically when you use malloc. Otherwise nothing is allocated. All the compiler does is just allocate the 4 bytes for the pointer which will hold the address of the "to-be" allocated memory. If you try to access the pointer without allocating any memory, the code will crash (u'll end up accessing some invalid memory in the program)