所以我们有一个实际上代表链表节点的结构 . 也是指向节点的指针 .
typedef struct node{
int value;
struct node *next;
}node;
node* head=NULL;
如果我要使用malloc动态分配指针,
head=malloc(sizeof(node));
这意味着我正在创建一些具有节点大小的内存空间,并且head指向它 .
我想知道这个 head=malloc(sizeof(node*));
之间的区别,你可以在sizeof中看到它有节点*而不是节点 . 现在我真的觉得我一直都不知道malloc到底做了什么!
3 回答
将在内存中分配一个空间以将POINTER保存到node类型的对象 .
将为结构本身分配空间,并返回该内存空间的地址,并将在
head
变量中保存有关更多信息,请查看有关Malloc的其他问题 . How do free and malloc work in C?
sizeof(node)
是整个结构的大小(以字节为单位),可以是任意大的 .sizeof(node*)
是指针变量的大小,无论结构有多大,它都是固定的(在大多数系统中它都很小) .是不正确的 . 对
malloc
的调用分配了足够的内存来仅保存node*
.node*
必须指向node
对象 . 这意味着您需要分配足够的内存来保存node
对象,而不是node*
.