【发布时间】:2016-02-17 18:16:48
【问题描述】:
所以我们有一个结构体,它实际上表示链表的一个节点。也是一个指向节点的指针。
typedef struct node{
int value;
struct node *next;
}node;
node* head=NULL;
如果我要使用 malloc 动态分配指针,
head=malloc(sizeof(node));
这意味着我正在创建一些内存空间,具有节点大小,并且 head 指向它。
我想知道这个head=malloc(sizeof(node*)); 之间的区别,正如你在sizeof 中看到的那样,它有node* 而不是node。现在我真的认为一直以来我都不知道 malloc 到底做了什么!
【问题讨论】:
-
malloc会给你一个指向至少和你要求的大小一样大的内存的指针(尽管有时它会在失败时返回NULL)。您是否尝试过实际打印出sizeof(node)与sizeof(node *)来看看您得到了什么? -
你不是“分配一个指针”,而是一个它指向类型的对象并将地址分配给指针。现在想想你必须将哪个尺寸传递给
malloc。