关于C指针的一个问题[已关闭]

yqhsw0fo  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(135)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

3天前关闭。
Improve this question
最近我在学习数据结构和算法,当我在给我的根BinaryTreeNode的leftChild添加一个leftChild的时候,比如说根节点是a,a的leftChild是b,b的leftChild是d,但是当我在创建节点d的时候,让我吃惊的是数据是b的节点也变成了d,我意识到这是C的指针造成的问题。但我不知道怎么修这是我的代码。
这就是我如何定义BinNode和BinTree

的结构
这些是用于生成节点和添加子节点的函数。

这是我的主要职责

添加根节点的第一个子节点后,根节点的外观如下所示。

添加根节点的第二个子节点后,根节点的外观如下所示。

你能帮我找出这个问题出现的原因和解决的方法吗?

sdnqo3pr

sdnqo3pr1#

generateNode函数在函数作用域中创建一个局部BinNode,并返回指向它的指针。问题是,当函数结束时,此内存被释放,因此指针指向未分配的内存,从而导致未定义的行为。相反,您应该使用malloc分配此内存,然后在不再需要时显式地使用free

相关问题