gpt4 book ai didi

c++ - 有 c-tor 和 d-tor 会产生段错误,而没有它们则不会出现段错误

转载 作者:行者123 更新时间:2023-11-28 05:30:12 29 4
gpt4 key购买 nike

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 会出现段错误

最佳答案

根据我的评论...

从显示的代码来看,默认构造的 KrTree 有一个未初始化的根成员。您看到的只是未定义的行为。

关于c++ - 有 c-tor 和 d-tor 会产生段错误,而没有它们则不会出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722007/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com