Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 由于信号10(SIGBUS),调试器已退出_C++ - Fatal编程技术网

C++ 由于信号10(SIGBUS),调试器已退出

C++ 由于信号10(SIGBUS),调试器已退出,c++,C++,这就是我在尝试测试双链接列表的remove\u at()功能时遇到的运行时错误。知道为什么会这样吗?我已经检查了我的算法,没有发现任何错误。或者,如果可能的话,请帮我用一个更简单的程序来完成 template <class T> void List<T>::remove_at(unsigned remIdx) { if (remIdx > (size - 1)) { throw("Out-of-bounds error."); }

这就是我在尝试测试双链接列表的
remove\u at()
功能时遇到的运行时错误。知道为什么会这样吗?我已经检查了我的算法,没有发现任何错误。或者,如果可能的话,请帮我用一个更简单的程序来完成

template <class T> void List<T>::remove_at(unsigned remIdx) { 
    if (remIdx > (size - 1)) { 
        throw("Out-of-bounds error.");
    } else { 
        node* curNodePtr = firstNodePtr;
        for (unsigned k = 0; k < remIdx; ++k)  
            curNodePtr = curNodePtr->nextNodePtr;
        (curNodePtr->prevNodePtr)->nextNodePtr = curNodePtr->nextNodePtr;
        (curNodePtr->nextNodePtr)->prevNodePtr = curNodePtr->prevNodePtr;
        delete curNodePtr;
    }
}

这不是编译器,而是运行时错误。。。很可能是从结构节点访问未初始化的指针!在您的示例中,列表本身和列表节点之间的区别不是很清楚。如果删除列表的最后一个元素会怎么样?然后应该更新FirstNodePt和lastNodePtr。因为您没有向我们展示main()程序来告诉我们如何操作列表,所以这里有一个想法:创建一个包含两个条目的列表,并尝试通过两个连续调用删除(0)处的_来删除这两个条目。换句话说,删除头部节点两次。哦,对了,每次删除firstNodePtr时都忘了更新它。
private:
    struct node { 
        T val;
        node* prevNodePtr;
        node* nextNodePtr;
    };
    node* firstNodePtr;
    node* lastNodePtr;
    unsigned size;