0Pricing
Zig Academy · Lekcja

alloc, free, create, destroy

Podstawowe operacje alokatora.

alloc, free, create, destroy to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Cztery podstawowe operacje

Alokator udostępnia cztery podstawowe wywołania: alloc i free dla wielu elementów oraz create i destroy dla pojedynczej wartości.

alloc zwraca wycinek

Użyj alloc, aby poprosić o ciąg elementów. Przekazujesz typ elementu i jego liczbę, a otrzymujesz wycinek zawierający tyle elementów.

const buf = try a.alloc(u8, 64);

alloc może się nie powieść

Ponieważ sterta może się wyczerpać, alloc zwraca unię błędu. Słowo kluczowe try obsługuje przypadek OutOfMemory w przejrzysty sposób.

const list = try a.alloc(i32, 10);

free zwraca pamięć

Gdy skończysz, wywołaj free z dokładnie tym wycinkiem, który otrzymałeś. Jeśli o tym zapomnisz, GeneralPurposeAllocator zgłosi wyciek.

a.free(buf);

Od razu odrocz free

Typową praktyką jest zapisanie defer a.free zaraz po pomyślnym alloc, aby czyszczenie wykonało się niezależnie od sposobu opuszczenia zakresu.

const buf = try a.alloc(u8, 64);
defer a.free(buf);

create dla jednej wartości

Gdy potrzebujesz dokładnie jednej wartości na stercie, użyj create. Przyjmuje typ i zwraca wskaźnik do pojedynczego elementu w świeżo przydzielonej pamięci.

const node = try a.create(Node);

Zapisuj przez wskaźnik

create daje Ci wskaźnik, więc przed użyciem wskazywanych danych ustawiasz wartość za jego pośrednictwem, używając .*.

node.* = Node{ .value = 42 };

destroy zwalnia wskaźnik

Zwolnij utworzoną wartość za pomocą destroy, przekazując ten sam wskaźnik, który zwróciło create. To operacja odpowiadająca create.

a.destroy(node);

Dobieraj operacje w pary

Zasada jest ścisła: alloc łączy się z free, a create z destroy. Nigdy ich nie zamieniaj ani nie zwalniaj wycinka, którego nie zaalokowałeś.

Zwalniaj tym samym alokatorem

Zawsze zwalniaj pamięć za pomocą tego samego alokatora, który ją przydzielił. Mieszanie alokatorów prowadzi do uszkodzenia pamięci, którego kompilator nie potrafi wykryć.

Błędy pomijają ciało defer

Jeśli samo alloc zakończy się niepowodzeniem, pamięć nie została przydzielona, więc nie ma czego zwalniać. Dlatego defer free umieszcza się po pomyślnym alloc. ✅

Szybkie sprawdzenie

Połącz każde wywołanie alokacji z właściwym wywołaniem zwalniającym.

Podsumowanie

Poznałeś pary: alloc/free dla wycinków oraz create/destroy dla pojedynczych wartości; pamięć zawsze należy zwalniać tym samym alokatorem. 🎯

Często zadawane pytania

Czy lekcja „alloc, free, create, destroy” jest bezpłatna?

Tak — pełny tekst „alloc, free, create, destroy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „alloc, free, create, destroy”?

Podstawowe operacje alokatora. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „alloc, free, create, destroy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dlaczego Zig nie ma ukrytych alokacji
  2. Interfejs alokatora
  3. alloc, free, create, destroy
  4. Dynamiczne listy z ArrayList
← Powrót do Zig Academy