Мне трудно найти источник утечек памяти в этом методе, несмотря на то, что я знаю, что он должен находиться в этом разделе кода. Код следующий:
Код: Выделить всё
bool LinkedList::InsertLast(int v) {
Node* newNode = new Node;
if (newNode == NULL) {
return false;
}
newNode->next = NULL;
newNode->value = v;
if (size == 0) {
first = newNode;
}
if (size != 0) {
last->next = newNode;
}
last = newNode;
size++;
return true;
}
Я искал причину, по которой различные переназначения указателей могут привести к тому, что один узел становится недоступным, но пока не могу понять этого. Если у меня есть список [w, x, y] и я использую InsertLast(z), то, если только InsertLast() не вызовет изменение x->next, я не понимаю, как y станет недоступным (вы можете просто перебирать список пока вы не дошли до него). А поскольку метод присваивает y->next и Last новому узлу, очевидно, что z будет доступен. Но если это два узла, на которые влияет InsertLast(), то я знаю, что один из них каким-то образом страдает от утечки памяти. Должно быть, я что-то упускаю, поэтому надеялся, что интернет-сообщество поможет мне понять, что это такое.
Подробнее здесь: https://stackoverflow.com/questions/783 ... nkedlist-c