c-添加此功能时出现分段故障(核心转储)



我试图将一个函数添加到已经工作的代码中。添加我的函数后,代码仍在执行,但当我选择案例3时,我得到了错误分割错误(核心转储(如果我选择情况3 ,我会得到分段故障(核心转储(错误

这是我对案例3的函数:

typedef struct Note_
{
int data;
struct Note_ *next;
} Note;
Note *head= NULL;
int number= 0;

void deleteNote(int x){

Note *t = head;
Note *prev;
if(t == NULL){
printf("List already empty.n");
}
while(t != NULL && t->data == x){
head = t->next;
free(t);
t= head;
printf("Note %d deleted.n", x);
}

while(t != NULL){
while(t != NULL && t->data != x){
prev = t;
t = t->next;
}
prev->next = t->next;
free(t);
t = prev->next;
}

}

在这个代码片段中

prev->next = t->next;
free(t);
t = prev->next;

指针CCD_ 1可以等于前一while循环之后的CCD_。

while(t != NULL && t->data != x)
{
prev = t;
t = t->next;
}

因此,使用空指针访问内存,如以下语句

prev->next = t->next;

调用未定义的行为。

您需要检查while循环后指针t是否不等于NULL

相关内容

  • 没有找到相关文章

最新更新