我正试图在我的特里解除指针。 这是我的特里结构
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函数有什么问题吗?感谢
更改了数组大小并被接受:)似乎问题不是指针:)谢谢大家
答案 0 :(得分:2)
您正在使用new
分配内存,free
来释放内存。我能看到的唯一错误是您应该new
使用delete
,malloc
使用free
。
答案 1 :(得分:1)
空输入的功能不正确。 deallocate(NULL)
会崩溃。功能(特别是构成框架的通用功能)应该是自给自足的,并且应该能够涵盖所有可能的输入。
答案 2 :(得分:0)
deallocate需要处理NULL输入
if(cur == NULL) { 返回; }
在功能开始时
* head应在声明
时声明为NULLtrie * head = NULL;