Czy w poniższym przykładzie dochodzi do wycieku pamięci?
char *wsk = malloc(10);
char nap[] = "napis";
strcpy(wsk,nap);
wsk[2] = '\0';
free(wsk);
Czy w poniższym przykładzie dochodzi do wycieku pamięci?
char *wsk = malloc(10);
char nap[] = "napis";
strcpy(wsk,nap);
wsk[2] = '\0';
free(wsk);
Nie. Dla free
nie mają znaczenia dane, które znajdują się w pamięci. Możesz sobie wyobrazić, że z każdym wywołaniem malloc
zapamiętywana jest na boku ilość pamięci, która została zaalokowana i później to ona jest zwalniania przez free
.
Dzięki. Nie byłem pewien czy znak zerowy wyznacza tylko koniec napisu czy też koniec bloku przydzielonej pamięci. Będę już pamiętał :)