Zig Academy · Lezione

Il Testing Allocator rileva le perdite

Rilevare automaticamente i bug di memoria

Lezione 3 di 413 passaggi

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. ✅

Gratis per iniziare

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

  1. Scrivere blocchi test
  2. Asserzioni con std.testing
  3. Il Testing Allocator rileva le perdite
  4. Eseguire e filtrare i test
← Torna a Zig Academy