Il Testing Allocator rileva le perdite
Rilevare automaticamente i bug di memoria
Il Testing Allocator rileva le perdite è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 3 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.
I bug di memoria sono insidiosi
Un programma può superare ogni verifica dei valori e tuttavia perdere memoria perché non la libera. Zig offre ai test uno strumento per rilevare proprio questo problema.
Conoscere testing.allocator
All'interno di un test è disponibile un allocator speciale in std.testing.allocator. Lo usi ovunque il codice debba allocare memoria nell'heap.
const a = std.testing.allocator;Tiene traccia di ogni allocazione
testing.allocator ricorda ogni blocco che assegna. Al termine del test verifica che ciascuno sia stato restituito.
Una perdita fa fallire il test
Se anche una sola allocazione non viene liberata, testing.allocator segnala una perdita e il test fallisce, indicando la liberazione mancante.
Allocare in un test
Richieda memoria all'allocator proprio come farebbe nel codice reale. Qui alloc riserva un buffer di dieci byte che dovrà liberare in seguito.
const buf = try a.alloc(u8, 10);Liberare con defer
Abbini a ogni allocazione un defer che la liberi. La pulizia viene programmata immediatamente, quindi viene eseguita anche se il test fallisce a metà.
const buf = try a.alloc(u8, 10);
defer a.free(buf);Dimenticare free per scoprire il bug
Rimuova quel defer e il test fallirà con un report di perdita. In questo modo allocator trasforma un bug silenzioso in un errore evidente e risolvibile.
Rileva anche le doppie liberazioni
Lo stesso allocator con controlli rileva la liberazione due volte dello stesso blocco o la liberazione di memoria che non aveva assegnato: sono cause classiche di crash.
Passarlo al proprio codice
Le funzioni che allocano accettano un parametro allocator. In un test, passi loro testing.allocator, così anche la memoria che usano viene monitorata.
const list = try buildList(std.testing.allocator);Liberare ciò che si crea
Qualunque cosa abbia allocato la funzione, il test deve liberarla. Aggiunga un defer subito dopo la chiamata per eseguire free o deinit sui dati restituiti.
defer list.deinit();Testare la liberazione della memoria
Poiché le perdite fanno fallire la compilazione, ogni test superato dimostra che la memoria è stata gestita correttamente. Questa garanzia è tipica di testing.allocator.
Verifica rapida
Esegue un test che alloca con std.testing.allocator ma non libera mai il buffer. Che cosa succede?
Riepilogo
Ha usato std.testing.allocator per rilevare gratuitamente perdite e doppie liberazioni. Abbini ogni allocazione a un defer free e i suoi test resteranno puliti. ✅
Impara Zig con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Il Testing Allocator rileva le perdite» è gratuita?
Sì — il testo completo di «Il Testing Allocator rileva le perdite» è 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 «Il Testing Allocator rileva le perdite»?
Rilevare automaticamente i bug 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 3 di 4.
Quanto tempo richiede la lezione «Il Testing Allocator rileva le perdite»?
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
- Scrivere blocchi test
- Asserzioni con std.testing
- Il Testing Allocator rileva le perdite
- Eseguire e filtrare i test