2009-08-19 128 views
3
struct node{ 
    int data; 
    struct node * next; 
}; 

编译器如何进行分配内存“下一个”成员的时候,我们还没有分配的内存结构“结构节点”在结构的内存分配

回答

3

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

7

接下来只是一个指针,它的大小是固定值,它只会添加int +指针大小+填充和分配节点struct

17

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

+0

换句话说,编译器为“下一个”分配足够的空间来存储指向节点结构中的节点的指针。要实际使用“下一个”,您必须进行另一个分配调用以填充下一个结构。 – Christopher 2009-08-19 19:53:47

0

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