For循环中的C ++分段错误

时间:2011-09-16 03:02:23

标签: c++ loops segmentation-fault

一切正常,直到索引19的最后一个值。实际上,所有值都打印出来,什么不是。一旦它打印出最终值&索引,它会出现故障。我假设这是因为它试图访问第20个值。我该如何防止这种情况发生?

主要文件代码:

int index = 0;
while (index < list.length())
{
  cout << list.getNextItem(index) << " " << index << "\n";
  index++;
}

HEADER CODE:

template <class Type>
Type doublyLinkedList<Type>::getNextItem(const Type& val) const
{
    nodeType<Type> *current; //pointer to traverse the list

    current = first;  //set current to point to the first node

    for (index=0; index < val; index++)
    {
        if (current != NULL)
        {
            current = current->next;
        }
    }
    return current->info;
}//end getNextItem

2 个答案:

答案 0 :(得分:3)

for (index=0; index < val; index++)
{
    if (current != NULL)
    {
        current = current->next;
    }
}
return current->info;

您将current分配给current->next。当它是null 然后时,当current->info为...时,您尝试返回current

至少那是我的怀疑;你发布的代码不完整,不可能给你一个具体的答案......但这肯定是罪魁祸首。

答案 1 :(得分:1)

您的current->info在空检查之外。当current为空时,您无法访问其指针并导致seg错误