Выделить указатель на три

Я пытаюсь освободить указатель на моем трие.
вот моя структура три

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);

Я действительно плохо знаком с указателями, есть ли что-то не так с моей функцией освобождения? Спасибо

изменил размер массива и получил 🙂 кажется, что проблема не в указателе 🙂 всем спасибо

2

Решение

Ты используешь new выделить память и free чтобы освободить это. Единственная ошибка, которую я вижу, это то, что вы должны либо использовать new с delete, или же malloc с free,

2

Другие решения

Ваша функция неверна для пустого ввода. deallocate(NULL) потерпит крах. Функции (особенно общие, которые составляют основу) должны быть самодостаточными и должны быть в состоянии охватить все возможные входные данные.

1

  • Deloclocate должен обрабатывать нулевой ввод

    if (cur == NULL)
    {
    вернуть;
    }

    в начале функции

  • * голова должна быть объявлена ​​как NULL при объявлении

    trie * head = NULL;

0
По вопросам рекламы [email protected]