这是我的流行代码:
int pop (struct_of_ints *head_node){
int val;
if (head_node == NULL){
fprintf(stderr, "Empty stack.\n");
return -1;
}
else {
struct_of_ints *curr;
struct_of_ints *prev;
curr = head_node;
prev = NULL;
while (curr->next != NULL) {
prev = curr;
curr = curr->next;
}
val = curr->value;
if (prev == NULL)
head_node = NULL;
else
prev->next = curr->next;
free(curr)
return val;
}
}
但是,当我尝试释放(curr)时,出现分段错误,并且当我运行 valgrind 时,我收到类似“无效的释放()/删除/删除 []”、“地址 0x51c1f60 在大小为 32 的块内的 16 个字节”之类的消息free'd”和“无效读取大小 8”...我不知道出了什么问题。如果有人可以提供帮助,我将不胜感激。谢谢!