Witam, mam problem z funkcją która będzie zwalniała pamięć przed wyjściem z programu.
Wykorzystuję listę list (lista podwieszana).
Tak wyglądają struktury:
typedef struct Samochod
{
char Model[STRING_MAX_SIZE];
char Kolor[STRING_MAX_SIZE];
char Nadwozie[STRING_MAX_SIZE];
uint Cena;
struct Samochod* next;
}Samochod;
typedef struct Marka
{
char NazwaMarki[STRING_MAX_SIZE];
struct Marka* next;
Samochod *head;
}Marka;
Następnie przed zakończeniem programu chcę wywołać funkcję zwalniającą pamięć w całej bazie, jednak program wyrzuca błąd. Wiem że nie mogę odnosić się już do pamięci, której miejsce zwolniłem dlatego wywala error. Ktoś mógłby dać jakieś wskazówki jak poprawić tą funkcje:
void DestroyDataBase(Marka *Head)
{
Marka *wsk = Head; //kopia głowy
while (wsk != NULL)
{
Samochod* wsk1 = wsk->head; //kopia głowy listy podwieszanej
free(wsk);
while (wsk1 != NULL)
{
free(wsk1);
wsk1 = wsk1->next; //przejscie do kolejnego elementu listy podwieszanej
}
wsk = wsk->next; //przejście do kolejnego elementu listy
}
}