我有以下结构:
struct node {
int data;
struct node *next;
};
struct node *n1 = malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)
我不确定如何将struct指针的所有指针字段初始化为NULL而不导致任何潜在的内存泄漏?
使用malloc以下方法分配结构后,需要初始化该结构的成员:
struct node {
int data;
struct node *next;
};
struct node *n1 = malloc(sizeof(struct node));
n1->data = 0;
n1->next = NULL;
Run Code Online (Sandbox Code Playgroud)
如果您要使用默认值一步一步地初始化结构,如果默认值要大得多,那么可以方便使用,请使用具有这些defaut值的静态结构:
struct node def_node = { 0, NULL };
struct node *n1 = malloc(sizeof(struct node));
*n1 = def_node;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用C99语法:
struct node *n1 = malloc(sizeof(struct node));
*n1 = (struct node){ 0, NULL };
Run Code Online (Sandbox Code Playgroud)
正如Leushenko所评论的那样,{ 0 }对于任何结构,您都可以将初始化器缩短为,以将所有成员初始化为其类型的适当零:
struct node *n1 = malloc(sizeof(struct node));
*n1 = (struct node){ 0 };
Run Code Online (Sandbox Code Playgroud)