char *ptr;
int i;
for (i=2; i<=5; i++) {
ptr = malloc(i);
}
free(ptr);
Cześć! Mam pytanie odnośnie powyższego zadania. Jaki będzie wyciek pamięci po wykonaniu się tego kodu? Wiem, że malloc przyjmuje ilość bajtów do dynamicznej rezerwacji w pamięci, ale nie do końca chyba rozumiem jak poniższy kod działa:
Według mnie wyciek pamięci będzie równy 9 bajtów, ponieważ pętla wykona się 4 razy rezerwując za każdym razem odpowiednio 2,3,4 oraz 5 bajtów, a po tym wszystkim funkcja free(ptr) wyczyści pamięć tylko z ostatniej iteracji, zatem reszta nie zostanie wyczyszczona więc wyciek pamięci będzie równy 9 bajtów.
Czy ktoś mógłby potwierdzić/zaprzeczyć i w tym drugim przypadku opisać jak działa powyższy kod i jaki będzie faktyczny wyciek?