释放树,但IDE会随着时间的推移获得一点内存

时间:2016-03-06 01:29:52

标签: c memory tree clion

我正在为我的树使用以下免费功能:

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函数是否已正确实现以排除该问题,并查看是否可能导致此缓慢内存构建的其他内容。

1 个答案:

答案 0 :(得分:0)

假设您的树实际上是以struct node成员名称所暗示的方式构建的,并且该节点'对于没有左或右子节点的节点,leftright指针都设置为NULL,您的freeTree()函数将释放与(sub)相关的所有内存)树的根节点,其参数指向。如果你有泄漏,那就在其他地方。