C++ 分段错误(核心转储)
C++ Segmentation error(core dumped)
所以我遇到的问题是分割错误。我正在尝试实现AVLtree,我相信我的代码的这一部分是问题所在,但我无法确定我做错了什么。
我的AVLtree课程的一部分:
Node* AVLtree::findNode(string cityID){
Node *thisNode = this->rootNode;
while(thisNode!=0){
if(thisNode->getCity()->getName().compare(cityID)==0){return thisNode;
}else if(thisNode->getChildR()->getCity()->getName() < cityID){ thisNode = thisNode->getChildR();
}else{thisNode = thisNode->getChildL();}
}
return this->rootNode;
}
我的主要文件:
int main(){
....
City city1("BoomTown", "EU", 1.01, 2.02);
....
AVLtree avltree1(&city1);
cout<< "TEST 1: AVLtree with city paramter of city1 (" << city1.getName()<< ")" << endl;
cout << "TEST 2: Getting name of city1: " << avltree1.findNode("BoomTown")->getCity()->getName() << endl;
我的 City 类和 Node 类都可以工作,我可以创建一个 AVLtree。我似乎在其中找不到节点。
这是我的输出:
$ ./mainTest
TEST 1: AVLtree with city paramter of city1 (BoomTown)
Segmentation fault (core dumped)
如果这是一个简单的错误,我很抱歉,但我是C++新手,需要时间和练习来学习:)提前谢谢。
(附言如果您需要更多代码,请询问)
在您的代码中,您似乎检查当前节点是否为 null,但在访问它之前您没有检查子节点是否为 null:
while(thisNode!=0) {
// ...
if(thisNode->getChildR()->getCity()->getName() < cityID){
^^^^^^^^^^^
here
该问题可能与您没有检查方法是否返回 propper 指针有关。如果尝试在无效指针上调用方法,则会出现分段错误。
在您的情况下:如果thisNode->getChildR()
实际上没有返回有效的指针,则调用getCity()
将进行核心转储。
相关文章:
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 我不知道为什么这段代码会让核心被转储?
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- 访问std::list元素将转储核心
- 使用SIGSEGV或SIGABRT信号转储核心并终止进程
- Eclipse (C++) 崩溃 无法写入核心转储.核心转储已被禁用
- 已终止(转储核心)
- 转储核心时拍摄堆快照的时间
- 读取字符串时转储核心
- 当main函数返回时转储核心
- 是否可以转储核心但不退出进程
- 在尝试libssh身份验证时转储核心