Witam :) Czy moglby mi ktos sprawdzic czy dobrze zwalniam pamiec ?
mam liste:
struct lista{
void *dane;
struct lista *next;
struct lista *prev;
};
dane to kilka roznych struktur np:
struct Sproc{//Procesor
char *producent;
char *typ;
char *model;
char *gniazdo;
int szybkosc;
int cena;
};
struct Sram{//Pamiec RAM
char *producent;
char *rodzaj;
char *standard;
int pojemnosc;
int cena;
};
i teraz funkcje zwalniające pamiec:
//funkcje zwalniajace pamiec
void zwolnij_liste(struct lista **korzen,void(*zwolnij)(void *))
{
struct lista *tmp,*tmp1;
tmp = tmp1 = *korzen;
while(tmp!=NULL)
{
tmp = tmp->next;
(*zwolnij)(tmp1->dane);
free(tmp1);
tmp1 = tmp;
}
*korzen = NULL;
}
void zwolnij_proc(struct Sproc *procesor)
{
free(procesor->producent);
free(procesor->typ);
free(procesor->model);
free(procesor->gniazdo);
}
void zwolnij_ram(struct Sram *ram)
{
free(ram->producent);
free(ram->rodzaj);
free(ram->standard);
}
void zwolnij_bez_danych(void *dane)
{
//powinna dzialac tak, ze usunie sie lista a dane zostaja (2 lista ktora ma podpiete dane z pierwszej)
}
void zwolnij_pamiec()
{
zwolnij_liste(&pkorzen,(void(*)(void*))zwolnij_proc);
zwolnij_liste(&pkorzen,(void(*)(void*))zwolnij_ram);
}
Chcialem zapytac czy zwalnianie pamieci jest zrobione dobrze , czy nie ma nigdzie wycieku ? Bo juz sam sie zaplatalem w tym.