gpt4 book ai didi

c - 如何在不释放内容的情况下释放指针?辅助变量

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

在学习这门语言的过程中,我越来越多地尝试解决内存泄漏问题。我正在处理的程序是二叉搜索树,树的根始终位于 tree->root->l。现在,如果我这样做...

BSTNode *search(BSTree *tree ,Item elem)
{
BSTNode* aux;
aux = tree->root->l;

/*
* BSTNode not found.
*
*/
if(notFound)
{
free(aux);
free(found)
return NULL;
}
// . . . . . .
}

它还会释放 tree->root->l 吗?如果是这样,我该如何避免?

最佳答案

指针本身处于自动存储中,这意味着您不必担心分配或释放它。因此,您需要担心的不是指针,而是指针寻址的内存。这就是 free 发挥作用的地方。 free 不释放指针,而是释放指针指向的内存。

will it also dealocate tree->root->l?

它将释放auxtree->root->l 指向的内存。

有问题的内存仍在被树使用,因此此时不应释放它。

how do I avoid it if so?

移除 free(aux);

Does this mean that if I leave variables like this it wouldn't cause a memory leak or unnecessarily used recourse?

正确。您需要问自己的问题是“该指针寻址的内存是否仍在使用?”如果答案是肯定的,请不要释放它。如果答案是否定的,请释放它。

关于c - 如何在不释放内容的情况下释放指针?辅助变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56194146/

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