C++ c+中的bug+;代码指针可能不指向任何东西
关于这行代码呢C++ c+中的bug+;代码指针可能不指向任何东西,c++,debugging,pointers,C++,Debugging,Pointers,关于这行代码呢 #include "BST.hpp" #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { /* Create an STL vector of some ints */ vector<int> v; v.push_back(3); v.push_back(4); v.push
#include "BST.hpp"
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
/* Create an STL vector of some ints */
vector<int> v;
v.push_back(3);
v.push_back(4);
v.push_back(1);
v.push_back(100);
v.push_back(-33);
/* Create an instance of BST holding int */
BST<int> b;
/* Insert a few data items. */
vector<int>::iterator vit = v.begin();
vector<int>::iterator ven = v.end();
for(; vit != ven; ++vit) {
// all these inserts are unique, so should return a std::pair
// with second part true
std::pair<BST<int>::iterator,bool> pr = b.insert(*vit);
if(! pr.second ) {
cout << "Incorrect bool return value when inserting " << *vit << endl;
return -1;
}
if(*(pr.first) != *vit) {
cout << "Incorrect iterator return value when inserting " << *vit << endl;
return -1;
}
}
if(*(pr.first) != *vit)
BST迭代器(BSTNode*curr){
本->当前=当前;
}
它位于不同的头文件中。我已经被这个错误困扰了两天了,我仍然不知道如何解决它。顺便说一句,这个错误是一个运行时错误,因为它没有给出标准的编译错误输出。我的猜测是指针没有指向任何东西,但我可能又错了。我可以从哪里开始查找错误或如何解决它吗?是的,取消引用空指针通常会导致分段错误或核心转储 通常建议在取消引用之前检查空值。 除非您正在创建一个类(如此处),并且希望用户执行该检查,就像您对std::vector所做的那样 如果插入函数返回空迭代器,则会导致取消引用空迭代器 你可以用
BSTIterator(BSTNode<Data>* curr) {
this->curr = curr;
如果pr.first为NULL,那么它将进入If语句并显示您的错误
因为NULL==0==False
if(!pr.first || *(pr.first) != *vit)