链接列表构造函数与节点迭代器给出无效指针的错误

时间:2012-03-09 05:48:21

标签: c++ pointers linked-list

我正在创建自己的链接列表。我试图创建一个链接列表的重载构造函数,它带有两个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;

}

以上headtail node<T>*到我列表中的节点。我创建的frontback node_iterators。 get_current()方法向node<T>*类指向的当前节点返回node_iterator。我已在我的++课程中测试了我重载的!=node_iterator运算符,但它们正常运行。但是当尝试使用上面的构造函数创建我的列表类时,我收到以下错误:

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

有关如何解决此问题或以更好的方式执行上述操作的任何提示?如果您需要了解更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

temp永远不会被初始化。我想应该是

unsigned temp = 0;

由于缺少= 0this->used最终成为一些随机值。我想一段时间后代码(实际上不在构造函数中),这会导致崩溃。