C-递归函数 - 警告:来自不兼容的指针类型的初始化[ - wiNcompatible-Pointer-types]



我的函数递归释放:

#include "treeStructure.h"
void destroyTree (Node* p)
{
    if (p==NULL)
        return;
    Node* free_next = p -> child; //getting the address of the following item before p is freed
    free (p); //freeing p
    destroyTree(free_next); //calling clone of the function to recursively free the next item
}

trestructure.h:

struct qnode {
  int level;
  double xy[2];
  struct qnode *child[4];
};
typedef struct qnode Node;

我不断发生错误

警告:不兼容的指针类型的初始化[-WiNCompatible-Pointer-types]

及其指向" p"。

我不明白为什么会发生这种情况。

有人可以解释并通知我如何解决此问题?

您会收到错误消息,因为指向Nodechild)数组的指针无法转换为Nodep)的指针。

作为child是四个指向Node的数组,您必须单独释放它们:

void destroyTree (Node* p)
{
    if (!p) return;
    for (size_t i = 0; i < 4; ++i)
        destroyTree(p->child[i]);
    free(p);
}

相关内容

  • 没有找到相关文章

最新更新