typedef struct Node {
int val;
int array[];
}Node;

初始错误写法

Node* n = NULL;
n = (Node*)malloc(sizeof(Node)
n->array = (int*)malloc(sizeof(iny) * 10);

正确写法

Node* n = NULL;
n = (Node*)malloc(sizeof(Node) + sizeof(int) * 10);

Node里面的array在构造的时候没有占内存,这个只是相当于一个标记以后有这个东西,因此在初始化内存的时候不能直接n->array = (int*)malloc…

只能在新建结构体的时候直接进行内存分配,进行程序员自定义内存覆盖

(Node*)malloc(sizeof(Node) + sizeof(int) * 10);

当然也可以选择第二种方式,直接用指针,直接在结构体中分配了内存

typedef struct Node {
int val;
int* array;
}Node;
n->array = (int*)malloc(sizeof(int) * 10);