Конструктор связанного списка с итераторами узлов, выдающими ошибку неверного указателя - PullRequest
1 голос
/ 09 марта 2012

Я нахожусь в процессе создания собственного связанного списка.Я пытаюсь создать перегруженный конструктор моего связанного списка, который использует два node_iterator, которые указывают на начало и конец другого связанного списка.

перегруженный конструктор списка:

template <typename T>
list<T>::list(node_iterator<T> front, node_iterator<T> back)
{
    unsigned temp;
    this->head = front.get_current();
    while(front != back)
    {
        ++temp;
        ++front;
    }
    this->tail = back.get_current();
    this->used = temp;

}

Выше head и tail * node<T>* для моих узлов в списке.front и back node_iterator, которые я создал.Метод get_current() возвращает node<T>* текущему узлу, на который указывает мой класс node_iterator.Я проверил перегруженные операторы ++ и != в своем классе node_iterator, и они работают.Однако, когда я пытаюсь создать мой список списков с помощью вышеуказанного конструктора, я получаю следующую ошибку:

*** glibc detected *** ./a.out: munmap_chunk(): invalid pointer: 0xbf91b1a4 ***

Какие-нибудь советы, как мне это исправить или сделать вышеперечисленное лучше?Пожалуйста, дайте мне знать, если вам нужно увидеть больше.

1 Ответ

1 голос
/ 09 марта 2012

temp никогда не инициализируется. Я думаю, это должно было быть

unsigned temp = 0;

В результате пропущенного = 0, this->used оказывается случайным значением. Я предполагаю, что через некоторое время в коде (а не в конструкторе) это вызывает сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...