结构内存分配

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

当我们尚未为结构“struct node”分配内存时,编译器如何为“next”成员分配内存

next member是一个指针 – 一个包含node地址的变量,而不是node本身。 所有数据类型指针通常具有相同的大小,因此编译器知道它是一个能够计算其大小的指针就足够了。

接下来的成员是一个指针。 指针大小都相同,因此编译器不需要知道下一个指向的大小。

接下来只是一个指针,所以它在每台机器中都是固定大小的值,它只需添加int +指针大小+填充并分配节点结构

当你使用malloc时它会动态发生。 否则没有分配。 所有编译器都只是为指针分配4个字节,该指针将保存“将要”分配的内存的地址。 如果您尝试在不分配任何内存的情况下访问指针,代码将崩溃(您将最终访问程序中的某些无效内存)