У меня есть связанный список. Она включает в себя конструктор копирования:переполнение в скопированной версии связанного списка
LinkedListStorage(const LinkedListStorage &other) :root(NULL)
{
size = other.size;
count = other.count;
node *cur = other.root;
node *end = NULL;
while(cur->next != NULL)
{
node* x = new node;
x->word = cur->word;
if(!root)
{
root = x;
end = root;
}
else
{
end->next = x;
end = x;
}
cur = cur->next;
}
}
В классе я запустить его через метод, чтобы написать связный список в файл, однако в то время как указанный способ работает для первоначального списка, скопированная версия списка вызывает доступ нарушение, перешагнув список, конечная запись в список, поскольку она скопирована, указывает на 0x00000000, как ожидалось, однако к моменту, когда она попадает в функцию записи, указатель для последнего узла заканчивается, указывая на 0xcdcdcdcd, никакой код не выполняется между попыткой копировать и использовать функцию записи, поэтому он должен быть конструктором копирования, однако я не могу на всю жизнь понять, где он идет не так.
Заранее благодарим за помощь!
0xcdcdcdcd обычно означает неинициализированный valiable – spiritwolfform
Трудно сказать, не видя остальную часть класса, но, может быть, вам нужно initialize 'x-> next', то есть' node * x = новый узел; x-> word = cur-> word; x-> next = NULL; ' – john
@John. Вы были правы, установив x-> next = cur->. Затем исправлена проблема, из-за этого он не инициализировал -> следующий из конечного элемента. Большое спасибо! Тем не менее, это не ответ, так что я должен делать с выбором правильного ответа? –