C++ c+中运行时的分段错误+;

C++ c+中运行时的分段错误+;,c++,segmentation-fault,C++,Segmentation Fault,我已经确定当我为我的LinkedList类调用toString()方法时会发生错误,更具体地说是在执行第8行或第9行时 string LinkedList::toString() const { int traverse=1; Node * that = head; string sout; while(size>=traverse) { sout += "value = "+that->s +" "; tha

我已经确定当我为我的
LinkedList类调用
toString()
方法时会发生错误,更具体地说是在执行第8行或第9行时

string LinkedList::toString() const
{
    int traverse=1;
    Node * that = head;
    string sout;

    while(size>=traverse)
    {
        sout += "value = "+that->s +" ";
        that = that->next;
        traverse++;

    }
    return sout;

}
这个LinkedList使用一个节点类来存储类似这样的数据,LinkedList类本身有一个int size变量和一个指向第一个节点的指针

class Node
{
friend class LinkedList;
private:
    std::string s;
    Node * next;
    Node(std::string st, Node *nextn);
};

我猜这是我的一个愚蠢的错误,但我无法通过盯着它或重新阅读关于指针的教程来理解它,如果不查看完整的代码,我们无法猜测哪里可能是错误。 对于当前代码,下面的代码似乎有故障。请为空检查添加日志

    that = that->next
    if(that ==null)

   {
       // std::cout<<"A null node found\n";
       break;
   }
that=that->next
if(that==null)
{

//std::coutyes基本问题是node*在某个点为空。 1) 第一次Seg错误在循环的第一次迭代时访问。原因:复制它的头为null。传递到此方法的列表指针的Chcek是正确的。 2) 在循环中迭代几次后出现segafull。原因:遍历条件不正确,超出了列表最后一个节点,因此尝试访问NULL


在任何一种情况下,您都可以尝试在循环中添加一些cout语句,还可以添加对“that”指针的检查。

尝试添加条件,而(size>=traverse&&that)现在,这是一种非常单一、不正确且复杂的遍历链接列表的方法…