2

我正在尝试释放我的 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);
}

这是我的头部初始化函数

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

在程序结束后我打电话给deallocate(head);

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

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

4

3 回答 3

2

new用于分配内存并free释放它。我能看到的唯一错误是您应该使用newwithdeletemallocwith free

于 2012-12-27T10:44:35.823 回答
1

您的函数对于空输入不正确。deallocate(NULL)会崩溃。功能(尤其是构成框架的通用功能)应该是自给自足的,并且应该能够覆盖所有可能的输入。

于 2012-12-27T10:47:03.107 回答
0
  • deallocate 需要处理 NULL 输入

    if (cur == NULL) { 返回; }

    在函数开始时

  • *head 应在声明时声明为 NULL

    特里*头=空;

于 2012-12-27T10:54:37.813 回答