我正在为我的树使用以下免费功能:
void freeTree(struct node *tree) {
if (tree == NULL) return;
freeTree(tree->left);
freeTree(tree->right);
free(tree);
}
我正在创建一个树/对它进行操作:
struct node *root = NULL;
root = createTree(testNodes);
inOrderPrint(root);
freeTree(root);
节点结构的定义:
struct node {
int val;
int color;
struct node *parent;
struct node *left;
struct node *right;
};
我注意到在运行足够的(很多小时)之后,内存开始在我的IDE中建立(非常少量)(我正在使用CLion)。我发帖询问我的freeTree
函数是否已正确实现以排除该问题,并查看是否可能导致此缓慢内存构建的其他内容。
答案 0 :(得分:0)
假设您的树实际上是以struct node
成员名称所暗示的方式构建的,并且该节点'对于没有左或右子节点的节点,left
和right
指针都设置为NULL
,您的freeTree()
函数将释放与(sub)相关的所有内存)树的根节点,其参数指向。如果你有泄漏,那就在其他地方。