我找不出爲什麼我的鏈表有內存泄漏。C鏈表內存泄漏
我有一種方法稱爲insertAtFront()
void insertAtFront(Node **head, char *key) {
Node *new = malloc(sizeof(Node));
if (!new) fatal("Malloc of new Node failed");
new->word = key;
new->next = *head;
*head = new;
}
然後,我有一個removeAtFront()
方法釋放的節點。
void removeAtFront(Node **head) {
Node *newhead = (*head)->next;
free(*head);
*head = newhead;
}
如果我只添加一個節點,然後刪除它,沒有泄漏。如果我刪除了多個節點,valgrind會顯示與添加了多少個附加節點成比例的泄漏。我真的不明白爲什麼會在節點釋放時發生這種情況。有任何想法嗎?
沒有足夠的代碼顯示評論。您需要顯示如何/何時/何地調用這些方法。 – John3136
請提供顯示問題的代碼的[最小完整且可驗證的示例](https://stackoverflow.com/help/mcve)。從這個不完整的代碼中不可能知道問題是什麼。 – kaylum
注意:'Node * newhead =(* head) - > next;'不應該發生'* head == NULL'。 – chux