Dalej•LEKCJA 21 / 22

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

  1. #include <stdlib.h>Przygotowujemy środowisko i deklarujemy element potrzebny programowi.
  2. int *number = malloc(sizeof *number);Tworzymy lub aktualizujemy zmienną, pole albo przypisanie.
  3. if (number != NULL) {Sprawdzamy warunek lub wybieramy jedną z możliwości.
Oczekiwany wynik / efektpo uruchomieniu przykładu
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); }
Wynik drugiego przykładupo uruchomieniu przykładu
7
Sprawdź, czy rozumiesz

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.

To już koniec tej lekcji.

Jeśli rozumiesz przykład, oznacz lekcję jako ukończoną i przejdź dalej.