gpt4 book ai didi

c - 取消引用 NULL 指针 'head' ,'tail

转载 作者:行者123 更新时间:2023-11-30 20:41:54 24 4
gpt4 key购买 nike

我用链表制作了一个蛇程序,该程序正在运行,但我有一些警告,我想知道我是否做错了什么,或者只是忽略了一些东西。程序本身运行没有任何错误。

//Thats what I send from main

SNAKE* snake = (SNAKE*)malloc(sizeof(SNAKE));





//Thats the function
void initialSnaKE(SNAKE* snake){
NODE* tail = (NODE*)(malloc(sizeof(NODE)));
NODE* head = (NODE*)(malloc(sizeof(NODE)));
head->prev = NULL;
tail->prev = head;
head->next = tail;
tail->next = NULL;
head->x = ROWS / 2;
head->y = COLS / 2;
snake->head = head;
snake->tail = tail;
}



最佳答案

malloc 可能会失败,这就是编译器所提示的。在取消引用指针之前,您必须进行适当的 NULL 检查。

void initialSnaKE(SNAKE* snake){

if (!snake) return; //invalid input

NODE* tail = (NODE*)(malloc(sizeof(NODE)));
if (!tail) return; //allocation failed.

NODE* head = (NODE*)(malloc(sizeof(NODE)));
if (!head) {
free(tail);
return;
}


head->prev = NULL;
tail->prev = head;
head->next = tail;
tail->next = NULL;
head->x = ROWS / 2;
head->y = COLS / 2;
snake->head = head;
snake->tail = tail;
}

关于c - 取消引用 NULL 指针 'head' ,'tail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com