У меня есть простой двусвязного пример списка, который я работаю, но по какой-то причине, я получаю ошибку: pointer being freed was not allocated
при попытке удалитьНе удается удалить в C++
Вот код snipet из вставка в конец списка метода
template <class T>
void List<T>::insertAtEnd(T *o)
{
node *newNode = new node;
newNode->o = o;
newNode->next = NULL;
newNode->prev = last;
if(last != NULL)
last->next = newNode;
last = newNode;
if(first == NULL)
first = newNode;
delete(newNode); // This delete call will usually be in another method
} // It is just here right now for testing
Этот класс имеет два экземпляра поля, указатель на начало списка и указатель на конец, первый и последний respecitvely. Каждый узел является структурой следующим образом:
struct node {
node *next;
node *prev;
T *o;
};
До сих пор я тестировался только с вставкой 1 узел, но я всегда получаю ту же ошибку. Однако, если я прокомментирую строки
if(first == NULL)
first = newNode;
это работает. Помоги пожалуйста? Спасибо
EDIT: Первый и последний старт как NULL
.
Где произносится 'first'? – prelic
Происходит ли код, который вы отправили здесь? Или вы говорите о каком-то другом коде, который мы не видим? –
Его глобальная переменная, которую я устанавливаю равной нулю в конструкторе. То же самое касается последних – Nosrettap