Allocator-interfacet
Én kontrakt for alle hukommelseskilder.
Allocator-interfacet er en gratis Zig Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Zig Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Zig Academy-kurset indeholder 4 lektioner i alt.
Én almindelig type
Alle allokatorer i Zig sendes rundt som én enkelt type, std.mem.Allocator. Din kode taler med denne ene grænseflade, aldrig med en konkret bagende.
const Allocator = std.mem.Allocator;En grænseflade, ikke en klasse
std.mem.Allocator er en lille grænseflade: en pointer plus en tabel med funktioner. Den beskriver, hvad en allokator kan gøre, ikke hvilken du bruger.
Mange bagender, én form
En sideallokator, en arena eller en testallokator har alle den samme form. Du kan udskifte den ene med den anden uden at ændre den kaldende kode.
Hent en rigtig allokator
Du anskaffer en konkret allokator og tager derefter dens .allocator()-håndtag, som du kan sende rundt som den generiske type std.mem.Allocator.
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();Send den videre
Når du har en allokator, sender du den samme værdi ind i enhver funktion, der har brug for hukommelse. Hele programmet kan dele én enkelt kilde.
try doWork(a);Sideallokatoren
std.heap.page_allocator beder operativsystemet direkte om hukommelse. Den er enkel, men grovkornet, så den egner sig til store eller langlivede blokke, ikke til små.
const a = std.heap.page_allocator;GeneralPurposeAllocator
GeneralPurposeAllocator er det almindelige valg i fejlfindingsbygninger. Den holder styr på hver blok og rapporterer hukommelseslækager og dobbelt frigivelse for dig.
Hvorfor en grænseflade er nyttig
Når du programmerer mod grænsefladen, fungerer din funktion med enhver allokator. Den samme kode kan køre i test, på hardware uden operativsystem eller på en server.
Funktioner spørger bare
En funktion er ligeglad med, hvilken allokator den modtog. Den kalder ganske enkelt metoder som alloc og free på den std.mem.Allocator, den fik.
const buf = try a.alloc(u8, 16);Ingen global allokator
Zig har ingen enkelt global heap. Du beslutter, hvilken allokator hver del af dit program bruger, så hukommelseskilderne forbliver synlige og lokale.
Test med en anden
I test sender du i stedet std.testing.allocator ind. Den samme kode, men nu får hukommelseslækager testen til at fejle, hvilket viser, at grænsefladen kan betale sig. ✅
Hurtigt tjek
Tænk over, hvilken type alle Zig-allokatorer deler.
Opsummering
Du har lært, at std.mem.Allocator er én grænseflade over mange bagender, så kode, der beder om hukommelse, fungerer med enhver allokator, du giver den. 🎯
Lær Zig med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Allocator-interfacet” gratis?
Ja — hele teksten til “Allocator-interfacet” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Zig Academy-kurset, skal du opgradere til CoddyKit PRO. Zig Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Allocator-interfacet”?
Én kontrakt for alle hukommelseskilder. Du øver dig i Zig Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Zig Academy?
Der kræves ingen tidligere erfaring. Zig Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Allocator-interfacet”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Zig Academy-lektion?
Ja. Alle Zig Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Derfor har Zig ingen skjulte allokeringer
- Allocator-interfacet
- alloc, free, create, destroy
- Dynamiske lister med ArrayList