在trie上释放指针

时间:2012-12-27 10:22:40

标签: c++ pointers memory-management free trie

我正试图在我的特里解除指针。 这是我的特里结构

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

trie *head;
trie *tmp;

这是我使用dfs的deallocate函数

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函数有什么问题吗?感谢

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

3 个答案:

答案 0 :(得分:2)

您正在使用new分配内存,free来释放内存。我能看到的唯一错误是您应该new使用deletemalloc使用free

答案 1 :(得分:1)

空输入的功能不正确。 deallocate(NULL)会崩溃。功能(特别是构成框架的通用功能)应该是自给自足的,并且应该能够涵盖所有可能的输入。

答案 2 :(得分:0)

  • deallocate需要处理NULL输入

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

    在功能开始时

  • * head应在声明

    时声明为NULL

    trie * head = NULL;