具有c-tor和d-tor会产生分段错误,而没有它们则没有分段错误

阿马雷什
struct Tnode {
 Tnode *left;
 Tnode *right;
 int content;

 Tnode (int item = 0) {
    this->content = item;
    left = nullptr;
    right = nullptr;
}};


class KrTree {
private:
Tnode* root;

void printHelper (Tnode* root) {
    if(!root) {
        return;
    }
    printHelper(root->left);
    cout << root->content << " ";
    printHelper(root->right);
}

void addHelper (Tnode *root, int item) {
    if (root->content < item) {
        if (root->right) {
            addHelper(root->right, item);
        } else {
            root->right = new Tnode (item);
        }

    }else {
        if (root->left) {
            addHelper(root->left, item);
        } else {
            root->left = new Tnode (item);
        }
    }
}

public:
//    KrTree (){
//    }

void addTreeNode (int item) {
    if (root){
        this->addHelper(root, item);
    } else {
        root = new Tnode(item);
    }
}

void tnodes_count () {

}

void deleteTreeNode () {

}

void printTree () {
    printHelper (this->root);
}

//~KrTree (){}};

在上面,我已经设置了二叉搜索树。请注意,我已经评论了我的c-tor和d-tor。我的问题是上面的代码运行良好,但是当我启用c-tor和d-tor时却给出了分段错误。

这是客户端代码:

KrTree* tree = new KrTree();
tree->printTree();
tree->addTreeNode(7);
tree->addTreeNode(2);
tree->addTreeNode(10);
tree->addTreeNode(1);
tree->addTreeNode(5);
tree->addTreeNode(9);
tree->addTreeNode(20);

tree->printTree();

我知道我在这里错过了一些非常愚蠢的东西。请让我知道乳清启用我的c-tor和d-tor会产生细分错误

亚历山大·阿尼克(Alexander Anikin)

如果没有构造函数,则默认情况下将KrTree.root初始化为0值。使用构造函数,这不会发生。然后,addTreeNode尝试使用此值作为参考,并且发生分段错误。Visual Studio中调试模式下的默认值类似于0xcdcdcdcdcdcdcdcd。您可以调试应用程序直到第一个addTreeNode并查看root的实际值。要解决此问题,您应该立即在构造函数中初始化成员变量值。例如:

KrTree () : root(nullptr) {
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有指针的C ++分段错误(HackerRank)

具有std :: function和lambda参数的分段错误

在main()上没有参数的分段错误

分段故障?我没有看到错误...

退出程序而没有coredump或分段错误

Vidalia:“ Tor没有运行”

c'tor和d'tor从抽象基础到其他抽象类的继承到具体

具有继承的c ++中的分段错误

分段错误:vfscanf.c 没有那个文件或目录

即使指针有pointee,strcpy也会发生分段错误

带有tor和reddit“ KeyError”的python

具有数组和C ++字符串的哈希算法的实现-分段错误(核心已转储)

3D阵列取消分配会产生分段错误

C中基于字符串的链表会产生分段错误

没有定义未使用数组的分段错误

没有CUDA代码的线程中的CUDA分段错误

没有指针时如何解决“分段错误”?

macOS上的分段错误,但Ubuntu上没有

零引用计数,仍然没有分段错误

如果和否则没有括号

带有指针和字符串的分段错误

尝试malloc时,Valgrind泄漏和分段错误具有特定输出

具有明显完美代码的C程序中的分段错误

具有可变函数参数的分段错误

为什么const int main = 195会导致程序正常运行,而没有const则会导致分段错误?

分段错误:在Mac上用C创建数组时,在Linux上没有11

pthreads 如何导致 c 中的分段错误(尽管没有分配内存)?

c linux中出现分段错误,但在Windows中没有

我的函数返回分段错误错误,显然没有错