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

Freeing tree, but IDE gains a bit of memory over time

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

void freeTree(struct node *tree) {

  if (tree == NULL) return;

  freeTree(tree->left);
  freeTree(tree->right);
  free(tree);

}

我正在这样创建一个 tree/operating:

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 成员名称所暗示的方式构建的,并且节点的 leftright 指针设置为 NULL 对于分别没有左或右子节点的节点,您的 freeTree() 函数将释放与其参数指向其根节点的(子)树关联的所有内存。如果你有泄漏,它在别处。