Witam.Pisząc projekt w c natrafiłem na wyciek pamięci za pomocą drMemory.Oto co wyrzucił program
Error #1: LEAK 108 direct bytes 0x01181668-0x011816d4 + 0 indirect bytes
0 replace_malloc [d:\drmemory_package\common\alloc_replace.c:2576]
1 CreateKeyElem [A:/workspace/workspace_c/projekt_c/v9_pamiec/próbA/main.c:32]
2 GetCode [A:/workspace/workspace_c/projekt_c/v9_pamiec/próbA/main.c:215]
3 GetCode [A:/workspace/workspace_c/projekt_c/v9_pamiec/próbA/main.c:206]
4 EncryptFile [A:/workspace/workspace_c/projekt_c/v9_pamiec/próbA/main.c:285]
5 main [A:/workspace/workspace_c/projekt_c/v9_pamiec/próbA/main.c:394]
Przechodząc do linii 32(jak mniemam po tym łańcuszku tak powinienem zrobić)dochodze do funkcji,która alokuje pamięć na strukture,inicjuje jej pola i zwraca wskaźnik
struct keyElem* CreateKeyElem(char tab[],char x)// tworzy element listy z kluczami
{
struct keyElem* temp = (struct keyElem*)malloc(sizeof(struct keyElem)); //linia 32
strcpy(temp->key,tab);
temp->data = x;
temp->next = NULL;
return temp;
}
Nie mogę tu zrobić free(temp); bo wtedy funkcja mijała by się z celem.Zamiast tego mam funkcje,która po przemieleniu struktur usuwa liste(stworzoną z tych struktur)
void DeleteList(struct keyElem* guard)
{
struct keyElem* temp0;
while(guard->next != NULL)
{
temp0 = guard->next;
guard->next = guard->next->next;
free(temp0);
}
}
Ktoś domyśla się co robie źle?A może źle interpretuje komonikat drMemory?