gpt4 book ai didi

c - 如何使用 C 释放二叉树?

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:03 26 4
gpt4 key购买 nike

我写了一个二叉搜索树,它工作正常,但我不确定我的程序是否释放了所有内存。

这是我对树节点的定义

typedef struct node  {
int val;
struct node *left, *right;
} nodeOfTree;

我写这个函数输出结果并释放所有节点,看起来答案是正确的但内存没有释放。

void outputAndDestroyTree(nodeOfTree *root)  {
if (!root) {return;}
outputAndDestroyTree(root->left);
printf("%d ", root->val);
outputAndDestroyTree(root->right);
free(root); // I free this pointer, but after doing that, I can still access this pointer in the main() function
}

这是否意味着我不能在递归函数中释放一段内存?谢谢~~~~~

更新:谢谢大家~

最佳答案

您的代码看起来没问题,但释放分配的内存不会神奇地将它的引用指针设置为 NULL。由于您没有为指针设置新值,因此旧地址将保留在那里,不受影响。也许你甚至可以从中读取而不会崩溃,尽管它是未定义的行为。

如果您希望在释放内存后将其设置为NULL,那么就这样做吧。调用 outputAndDestroyTree(root->left); 然后执行 root->left = NULL;

关于c - 如何使用 C 释放二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726249/

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