Witam, niedawno zacząłem używać deklaracji wskaźnik na wskaźnik żeby trochę ułatwić sobie życie, ale niestety tak do końca się nie stało.
Mój problem polega na tym że gdy chcę zwolnić jakiś wskazany element przez użytkownika to wywala mi błąd w visualu, chociaż po pomięciu go, program wykonuje poprawnie usunięcie(po wydrukowaniu listy nie ma już tego elementu który miał zostać usunięty ).
Tutaj prezentuje kod dla akurat dla listy jednokierunkowej cyklicznej ale to objawia się też w innych moich programach:
typedef struct lista
{
int dane;
struct lista *nast;
};
typedef struct lista *point;
void usun_1(point *lista, int liczba)
{
int pomoc;
point p = *lista,usun=NULL;
if (p)
{
do
{
if (p->dane == liczba)
{
p->dane = p->nast->dane;
p->nast->dane = liczba;
usun = p->nast;
p->nast = p->nast->nast;
free(usun);
return;
}
else
p = p->nast;
} while (p != (*lista));
}
printf("Nie znaleziono elementu do usuniecia\n");
}
Sam błąd wygląda następująco
zd.jpg
i break point pojawia się przy linii free(usun).
Czy ktoś jest mi w stanie odpowiedzieć dlaczego taki błąd występuje ?