结构内存分配

时间:2009-08-19 11:11:12

标签: c pointers structure

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

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

4 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:7)

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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