У меня есть некоторые проблемы, возможно, из-за неправильного понимания того, как работает функция «free».По сути, я определил структуру, подобную этой
typedef char parola[11]
typedef struct _node node
struct _node
{
parola wrd;
node *padre;
node *Ts;
node *Td;
};
Позже в коде я выделяю память для узла, используя malloc:
node *r
r = (node *) malloc(sizeof(node));
И я создаю двоичные деревья поиска, выделяющие память для каждогоузел таким образом.Когда я пытаюсь удалить узел в bst, я передаю указатель на этот узел * n.Я думаю, что прибиваю рекурсивную процедуру, но потом, когда дело доходит до использования free () для указателя на узел, это, похоже, не работает.Я уверен в этом, потому что если я попытаюсь напечатать «parola» в узле, он действительно напечатает слово, которое содержалось там после освобождения памяти.
node *n
.../*in another function*/
free (n)
printf("%s\n",n->wrd)
/*This does print the word inside the node after the deallocation*/
Чего мне здесь не хватает?Нужно ли мне использовать free () по-другому?
Спасибо за вашу помощь.