函数调用中的C++分割错误? 我试图在C++中创建一个简单的二进制搜索树类,但是每当我调用我的插入函数: template<typename T> void BSTree_Fast<T>::insert(T & key) { cout<<"working"; int i=0; BSTNode<T> *newNode=new BSTNode<T>(key); //Initializing pointer to newNode with key as Key if(maxDepth==0){ //if tree is empty, sets root to new node root=newNode; setMaxDepth(1); } BSTNode<T> *curr=root; //Traversal unit curr if(key==curr->getKey()){ //checking if inserted key is same as root key int n=curr->getNum(); n++; curr->setNum(n); delete(newNode); } while(key!=curr->getKey()){ //first while loop when above is not true if(key<curr->getKey()){ //checks left if key < current key if(curr->getLeft()==NULL){ //if cannot traverse left, creates new node to left of current curr->setLeft(newNode); if(i>maxDepth){ cout<<i; setMaxDepth(i); } break; } else if(curr->getLeft()->getKey()==key){//if left child equals input key, increase number int n=curr->getLeft()->getNum(); n++; curr->getLeft()->setNum(n); delete(newNode); break; } else{ i++; curr=curr->getLeft(); //traverses left } } if(key>curr->getKey()){ //checks right if key > current key if(curr->getRight()==NULL){ //if cannot traverse right, creates new node to right curr->setRight(newNode); if(i>maxDepth){ setMaxDepth(i); } break; } else if(curr->getRight()->getKey()==key){//if right child equals input key, increase number int n=curr->getRight()->getNum(); n++; curr->getRight()->setNum(n); delete(newNode); break; } else{ i++; curr=curr->getRight(); //traverses to right } } } }

函数调用中的C++分割错误? 我试图在C++中创建一个简单的二进制搜索树类,但是每当我调用我的插入函数: template<typename T> void BSTree_Fast<T>::insert(T & key) { cout<<"working"; int i=0; BSTNode<T> *newNode=new BSTNode<T>(key); //Initializing pointer to newNode with key as Key if(maxDepth==0){ //if tree is empty, sets root to new node root=newNode; setMaxDepth(1); } BSTNode<T> *curr=root; //Traversal unit curr if(key==curr->getKey()){ //checking if inserted key is same as root key int n=curr->getNum(); n++; curr->setNum(n); delete(newNode); } while(key!=curr->getKey()){ //first while loop when above is not true if(key<curr->getKey()){ //checks left if key < current key if(curr->getLeft()==NULL){ //if cannot traverse left, creates new node to left of current curr->setLeft(newNode); if(i>maxDepth){ cout<<i; setMaxDepth(i); } break; } else if(curr->getLeft()->getKey()==key){//if left child equals input key, increase number int n=curr->getLeft()->getNum(); n++; curr->getLeft()->setNum(n); delete(newNode); break; } else{ i++; curr=curr->getLeft(); //traverses left } } if(key>curr->getKey()){ //checks right if key > current key if(curr->getRight()==NULL){ //if cannot traverse right, creates new node to right curr->setRight(newNode); if(i>maxDepth){ setMaxDepth(i); } break; } else if(curr->getRight()->getKey()==key){//if right child equals input key, increase number int n=curr->getRight()->getNum(); n++; curr->getRight()->setNum(n); delete(newNode); break; } else{ i++; curr=curr->getRight(); //traverses to right } } } },c++,segmentation-fault,C++,Segmentation Fault,但是,当使用从文件中读入的字符串调用它时,它似乎在实现任何实际代码之前遇到segfault。浏览添加第一个节点的过程: BSTNode<T> *newNode=new BSTNode<T>(key); //Initializing pointer to newNode with key as Key if(maxDepth==0){ //if tree is empty, sets root to new node root=n

但是,当使用从文件中读入的字符串调用它时,它似乎在实现任何实际代码之前遇到segfault。

浏览添加第一个节点的过程:

  BSTNode<T> *newNode=new BSTNode<T>(key);  //Initializing pointer to newNode with key as Key
  if(maxDepth==0){              //if tree is empty, sets root to new node
    root=newNode;
    setMaxDepth(1);
  }
显然,钥匙会匹配的。所以我们刚刚删除了newNode,它也是root和cur


oops,我们访问curr,我们刚刚删除了它。

输出可能是行缓冲的。你有没有试过添加新行-你忘记问问题了。当你按下“提问”按钮时,你实际上要问一个特定的问题。你讲了一个故事,然后就停了下来,让我们来猜你真正的问题是什么。它可能是任何东西,从什么是分割错误?我的代码看起来有点不合理吗?。
  BSTNode<T> *curr=root;            //Traversal unit curr
  if(key==curr->getKey()){          //checking if inserted key is same as root key
    int n=curr->getNum();
    n++;
    curr->setNum(n);
    delete(newNode);
  }
while(key!=curr->getKey()){