alloc, free, create, destroy
De grundläggande allokeraroperationerna
alloc, free, create, destroy är en gratis lektion i Zig Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Zig Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Zig Academy innehåller totalt 4 lektioner.
Fyra grundläggande operationer
En allokerare ger er fyra viktiga anrop: alloc och free för flera objekt, samt create och destroy för ett enda värde.
alloc returnerar en slice
Använd alloc för att begära en följd av objekt. Ni anger elementtypen och antalet och får tillbaka en slice med så många element.
const buf = try a.alloc(u8, 64);alloc kan misslyckas
Eftersom heapen kan ta slut returnerar alloc en error union. Nyckelordet try hanterar fallet OutOfMemory på ett smidigt sätt.
const list = try a.alloc(i32, 10);free lämnar tillbaka minnet
När ni är klara anropar ni free med exakt den slice ni fick. Om ni glömmer detta rapporterar GeneralPurposeAllocator en läcka.
a.free(buf);defer free direkt
En vanlig vana är att skriva defer a.free direkt efter en lyckad alloc, så att städningen körs oavsett hur scopet avslutas.
const buf = try a.alloc(u8, 64);
defer a.free(buf);create för ett värde
När ni behöver exakt ett värde på heapen använder ni create. Den tar en typ och returnerar en pekare till ett enda objekt i nytt minne.
const node = try a.create(Node);Skriv via pekaren
create ger er en pekare, så ni anger värdet via den med .* innan ni använder datan som den pekar på.
node.* = Node{ .value = 42 };destroy pekaren
Frigör ett skapat värde med destroy och skicka med samma pekare som create returnerade. Detta är det matchande anropet till create.
a.destroy(node);Matcha paren
Regeln är strikt: alloc hör ihop med free och create hör ihop med destroy. Blanda aldrig ihop dem och frigör aldrig en slice som ni inte har allokerat.
Frigör med samma allokerare
Frigör alltid minne med den samma allokerare som skapade det. Om ni blandar allokerare kan minnet skadas utan att kompilatorn upptäcker det.
Fel hoppar över defer-kroppen
Om alloc själv misslyckas skapades inget minne, så det finns inget att frigöra. Därför kommer defer free efter en lyckad alloc. ✅
Snabb kontroll
Matcha varje allokeringsanrop med rätt anrop för att frigöra minnet.
Sammanfattning
Ni har lärt er paren: alloc/free för slices och create/destroy för enskilda värden, som alltid frigörs med samma allokerare. 🎯
Lär dig Zig med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”alloc, free, create, destroy” gratis?
Ja – hela texten till ”alloc, free, create, destroy” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Zig Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Zig Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”alloc, free, create, destroy”?
De grundläggande allokeraroperationerna Ni övar på Zig Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Zig Academy?
Du behöver inga förkunskaper. Utbildningen i Zig Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”alloc, free, create, destroy”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Zig Academy-lektionen?
Ja. Varje Zig Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Varför Zig inte har dolda allokeringar
- Allokerargränssnittet
- alloc, free, create, destroy
- Dynamiska listor med ArrayList