c++ - 释放 trie 上的指针

标签 c++ pointers memory-management free trie

我正在尝试释放我的特里树上的指针。 这是我的特里结构

struct trie
{
    int x;
    trie *next[26];
};

trie *head;
trie *tmp;

这是我使用 dfs 的解除分配函数

void deallocate(trie *cur)
{
    for (int a=0; a<=25; a++)
    {
        if (cur->next[a] != NULL)
        {
            tmp = cur->next[a];
            cur->next[a] = NULL;
            deallocate(tmp);
        }
    }
    free(cur);
}

这是我的 head 初始化函数

void init()
{
    head = new trie;
    head->x = 0;
    for (int a=0; a<=25; a++)
    {
        head->next[a] = NULL;
    }
}

程序结束后我调用了deallocate(head);

我对指针的东西真的很陌生,我的释放函数有什么问题吗?谢谢

更改了数组大小并被接受:)看来问题不是指针:)谢谢大家

最佳答案

您正在使用new来分配内存,并使用free来释放内存。我看到的唯一错误是您应该将 newdelete 一起使用,或将 mallocfree 一起使用。

关于c++ - 释放 trie 上的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053056/

相关文章:

c++ - 使用不同标志编译多个源的 makefile

c++ - 如何使二进制文件与不同的发行版兼容

c - 将数组传递给函数后如何知道数组的大小

c - 如何获取结构体内部结构体成员的指针

C:用指针返回数组程序中的偶数,为什么我的程序打印结果后崩溃

Java - 内存不足时以编程方式减少应用程序负载

c - 如何为 int C 哈希表分配内存?

c++ - Wt:1.5 GB 用于运行论坛(即使连接了单个用户)。正常吗?

python - c++ 执行时间比 python 慢

c++,当左值传递给T&&时会发生什么?