Я делаю код о построении древовидной структуры в C, которая не является двоичной. Структура содержит горизонтальную, вертикальную ссылку и значение символа. Сейчас я пытаюсь освободить каждую структуру, выделенную для построения этого дерева, но valgrind дает мне ошибку. Я использую двойной указатель, чтобы указать на голову дерева. В функции стопка означает стек, поэтому я складываю каждый узел вертикально, а затем ищу горизонтальные. Я привожу в качестве примера пример дерева, его структуры и результата валгринда Можете ли вы помочь мне понять, что не так, потому что я не понимаю? Спасибо !
void libererArbre(cellule ** tete)
{
cellule * cour = * tete;
cellule ** temp = &cour;
pile_t * pile;
pile = initialisationPile(TAILLE_PILE);
int fin = 0;
while(fin == 0)
{
while(cour != NULL)
{
empiler(cour, pile);
//printf("empilimi %c\n", cour->valeur);
cour = cour->lienVertical;
}
if(!estVidePile(pile))
{
cour = depiler(pile);
//printf("depilimi %c\n", cour->valeur);
temp = &cour;
free(temp);
cour = cour->lienHorizontal;
}
else
{
fin = 1;
printf("a futet ne fin 1 apo jo \n");
}
}
libererPile(pile);
}
Вот изображение результата valgrind:
![enter image description here](https://i.stack.imgur.com/37wR3.png)
Вот изображение объяснения структуры:
![enter image description here](https://i.stack.imgur.com/QCw0z.png)