gpt4 book ai didi

c++ - 在 BST 中插入节点时出现 EXC_BAD_ACCESS (EXC_i386_GPFLT)

转载 作者:行者123 更新时间:2023-11-30 05:24:07 25 4
gpt4 key购买 nike

我正在尝试通过 C++ 从 XCode 中的给定数组填充二叉搜索树。我正在使用递归以下列方式生成 BST。

int main(int argc, const char * argv[]) {
const int length = 19;
int data[length] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20};
Node* root = new Node(12);

for(int i = 0;i<length;i++){
insert(data[i], &root);
}
return 0;
}

这是我的插入函数

void insert(int key, Node **current)
{
if(*current == NULL)
{
Node *newnode = new Node(key);
*current = newnode;
}
else
{
if(key < (*current)->value) ---------EXCEPTION HERE
insert(key, &(*current)->left);
else
insert(key, &(*current)->right);
}
}

有时它会抛出异常 EXC_BAD_ACCESS(代码 = EXC_i386_GPFLT)。相同的逻辑在带有 C# 的 Visual Studio 中运行良好。我在 C++ 中对内存做错了什么吗?我不太熟悉 C++,但似乎一切都应该有效。

最佳答案

在应用夏洛克·福尔摩斯的方法来寻找漏洞后 (1),最可能的解释是 leftright 类成员没有被显式初始化为 nullptr.

(1) “一旦你排除了不可能的,剩下的,无论多么不可能,都一定是真相。”

关于c++ - 在 BST 中插入节点时出现 EXC_BAD_ACCESS (EXC_i386_GPFLT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38817999/

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