0Pricing
Zig Academy · Lezione

L'interfaccia dell'allocatore

Un unico contratto per tutte le sorgenti di memoria

L'interfaccia dell'allocatore è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.

Un tipo comune

Ogni allocatore in Zig viene gestito come un unico tipo, std.mem.Allocator. Il Suo codice interagisce con questa interfaccia, mai con un backend concreto.

const Allocator = std.mem.Allocator;

Un'interfaccia, non una classe

std.mem.Allocator è una piccola interfaccia: un puntatore più una tabella di funzioni. Descrive cosa può fare un allocatore, non quale allocatore viene utilizzato.

Molti backend, un'unica forma

Un allocatore di pagine, un'arena o un allocatore di test espongono tutti la stessa forma. Sostituirne uno con un altro non richiede modifiche al codice chiamante.

Ottenere un allocatore concreto

Si ottiene un allocatore concreto, quindi si usa il relativo handle .allocator() da passare come tipo generico std.mem.Allocator.

var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();

Passarlo alle funzioni

Una volta in possesso di un allocatore, si passa quel valore a ogni funzione che necessita di memoria. L'intero programma può condividere un'unica sorgente.

try doWork(a);

L'allocatore di pagine

std.heap.page_allocator richiede memoria direttamente al sistema operativo. È semplice ma poco granulare, quindi è adatto a blocchi grandi o di lunga durata, non a quelli piccoli.

const a = std.heap.page_allocator;

GeneralPurposeAllocator

GeneralPurposeAllocator è la scelta comune nelle build di debug. Tiene traccia di ogni blocco e segnala automaticamente memory leak e double free.

Perché un'interfaccia è utile

Scrivere usando l'interfaccia significa che la funzione funziona con qualsiasi allocatore. Lo stesso codice può essere eseguito nei test, su bare metal o su un server.

Le funzioni chiedono soltanto

Una funzione non deve sapere quale allocatore ha ricevuto. Si limita a chiamare metodi come alloc e free sull'oggetto std.mem.Allocator ricevuto.

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

Nessun allocatore globale

Zig non ha un unico heap globale. Si decide quale allocatore usare in ogni parte del programma, mantenendo visibili e locali le sorgenti della memoria.

Testare con un altro allocatore

Nei test si passa invece std.testing.allocator. Il codice rimane lo stesso, ma ora i leak fanno fallire il test, dimostrando il valore dell'interfaccia. ✅

Verifica rapida

Rifletta sul tipo condiviso da tutti gli allocatori Zig.

Riepilogo

Ha imparato che std.mem.Allocator è un'unica interfaccia per molti backend, quindi il codice che richiede memoria funziona con qualsiasi allocatore fornito. 🎯

Domande Frequenti

La lezione «L'interfaccia dell'allocatore» è gratuita?

Sì — il testo completo di «L'interfaccia dell'allocatore» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.

Cosa imparerò in «L'interfaccia dell'allocatore»?

Un unico contratto per tutte le sorgenti di memoria Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Zig Academy?

Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «L'interfaccia dell'allocatore»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Zig Academy?

Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché Zig non ha allocazioni nascoste
  2. L'interfaccia dell'allocatore
  3. alloc, free, create, destroy
  4. Liste dinamiche con ArrayList
← Torna a Zig Academy