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

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

4

4 回答 4

17

next 成员是一个指针。指针的大小都是一样的,所以编译器不需要知道 next 可能指向的东西有多大。

于 2009-08-19T11:13:07.757 回答
7

Next 只是一个指针,所以它在每台机器上都是一个固定大小的值,它只会添加 int+pointer sizes + padding 并分配节点结构

于 2009-08-19T11:12:51.940 回答
3

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

于 2009-08-19T11:17:47.547 回答
0

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

于 2012-12-30T11:12:46.250 回答