一、问题描述
typedef struct Node {
int val;
struct Node* next;
} Node;
typedef struct {
int size;
Node* data;
} MyLinkedList;
/** Initialize your data structure here. */
MyLinkedList* myLinkedListCreate() {
MyLinkedList* obj = (MyLinkedList*)malloc(sizeof(MyLinkedList));
Node* head = (Node*)malloc(sizeof(Node));
head->next = (void*)0;
obj->data = head;
obj->size = 0;
return obj;
}
这段代码的这一句 Node* head = (Node*)malloc(sizeof(Node));
为什么不写成这一句呢? Node* head = (Node*)malloc(sizeof(Node*));
sizeof()括号里面的是填什么呢?
二、根本原因
【需要分配的是节点本身,而不是指针】
sizeof(Node) // 计算的是整个 Node 结构体的大小(比如 16 字节)
sizeof(Node*) // 计算的是指针的大小(64位系统是 8 字节)