Pamięć dynamiczna
Kurs C · Wyjaśnienie, przykłady, oczekiwany wynik i ćwiczenie.
Pamięć dynamiczna pozwala przydzielić miejsce dopiero podczas działania programu.
Jak to działa?
malloc() rezerwuje pamięć, free() ją zwalnia. Zawsze sprawdzaj, czy przydzielenie się udało, i pamiętaj o zwolnieniu zasobu.
Przykład 1 — poznaj zapis
#include <stdlib.h>
int *number = malloc(sizeof *number);
if (number != NULL) {
*number = 42;
printf("%d\n", *number);
free(number);
}
Po free() nie używaj zwolnionego wskaźnika.
Przeczytaj kod linijka po linijce
#include <stdlib.h>Przygotowujemy środowisko i deklarujemy element potrzebny programowi.int *number = malloc(sizeof *number);Tworzymy lub aktualizujemy zmienną, pole albo przypisanie.if (number != NULL) {Sprawdzamy warunek lub wybieramy jedną z możliwości.
42 (gdy malloc się powiedzie)
Przykład 2 — podobny problem, inne dane
Teraz przyjrzyj się drugiemu przykładowi. Zwróć uwagę na to, co zmieniło się w kodzie, a co w wyniku. Spróbuj przewidzieć rezultat przed przeczytaniem odpowiedzi.
int *p = malloc(sizeof *p);
if (p) { *p = 7; printf("%d\n", *p); free(p); }
7
Wróć do pierwszego przykładu, zmień jedną wartość i spróbuj samodzielnie przewidzieć wynik. Następnie uruchom kod i porównaj rezultat. W ten sposób nauczysz się nie tylko przepisywać instrukcje, ale rozumieć ich działanie.
Spróbuj samodzielnie
Przydziel pamięć na tablicę pięciu liczb.
Jeśli rozumiesz przykład, oznacz lekcję jako ukończoną i przejdź dalej.