這裏是我的流行代碼:)無法在我的彈出功能中釋放/釋放空間?
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個字節「以及」大小爲8的無效讀取「......我不知道有什麼問題。如果有人能幫助我會很感激。謝謝!
我建議你使用雙鏈表來代替尾指針。如果你想從尾部移除,會使生活變得更簡單。或者,如果你實現了一個堆棧,只需在頭上按/彈出即可。 – 2013-04-23 03:05:37
用'-g'標誌編譯代碼,運行'gdb'來檢查你的錯誤。 – MYMNeo 2013-04-23 03:09:22