0
我使用了我的树下面的免费功能有点记忆:解放出来的树,但IDE收益随着时间的推移
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
函数是否正确实现以排除这种情况,并查看它是否可能是导致此慢速内存积聚的其他内容。
'struct node'的定义是什么?它是否有任何其他指针成员的参考对象可能需要被释放?例如,显然有些内容需要打印,这表明它可能有一个字符串指针。 –
@JohnBollinger更新了结构定义的问题。 – httpNick
您是否尝试过使用['valgrind'](http://valgrind.org/)?它在您的平台上可用吗?从表面上看,你的代码看起来不错,但是我们看不到任何分配,这意味着你可能会做一些意想不到的事情,并且不会释放一些内存。基本上,你需要提供一个可以解决问题的MCVE([MCVE]),在那之前,我们无能为力。 –