O alocador de testes detecta vazamentos
Detecte erros de memória automaticamente.
O alocador de testes detecta vazamentos é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Erros de memória são traiçoeiros
Um programa pode passar por todas as verificações de valores e ainda assim vazar memória por esquecer de liberá-la. O Zig oferece uma ferramenta de testes para detectar exatamente isso.
Conheça testing.allocator
Dentro de um teste, você obtém um alocador especial em std.testing.allocator. Use-o sempre que seu código precisar alocar memória no heap.
const a = std.testing.allocator;Ele acompanha cada alocação
O testing.allocator registra cada bloco que entrega. Quando o teste termina, ele verifica se cada bloco foi devolvido.
Um vazamento faz o teste falhar
Se mesmo uma alocação não for liberada, o testing.allocator informa um vazamento e o teste falha, indicando a chamada free ausente.
Alocando em um teste
Peça memória ao alocador como faria no código real. Aqui, alloc reserva um buffer de dez bytes que você deverá liberar depois.
const buf = try a.alloc(u8, 10);Libere com defer
Associe cada alocação a um defer que a libera. A limpeza é agendada imediatamente, portanto será executada mesmo que o teste falhe no meio do caminho.
const buf = try a.alloc(u8, 10);
defer a.free(buf);Esqueça free e detecte o erro
Remova esse defer e o teste falhará com um relatório de vazamento. É assim que o allocator transforma um erro silencioso em uma falha evidente e corrigível.
Ele também detecta liberações duplicadas
O mesmo allocator verificado detecta a liberação do mesmo bloco duas vezes ou a liberação de uma memória que ele nunca entregou, situações que costumam causar falhas graves.
Passe-o ao seu código
Funções que alocam recebem um parâmetro de alocador. Em um teste, passe testing.allocator a elas para que a memória também seja acompanhada.
const list = try buildList(std.testing.allocator);Limpe o que você cria
O teste precisa liberar tudo o que sua função alocou. Adicione um defer logo após a chamada para usar free ou deinit nos dados retornados.
defer list.deinit();Testando a liberação de memória
Como os vazamentos fazem a compilação falhar, cada teste aprovado comprova que sua memória foi devidamente liberada. Essa confiança é exclusiva de testing.allocator.
Verificação rápida
Você executa um teste que aloca usando std.testing.allocator, mas nunca libera o buffer. O que acontece?
Recapitulação
Você usou std.testing.allocator para detectar vazamentos e liberações duplicadas sem custo. Associe cada alloc a um defer free e seus testes permanecerão limpos. ✅
Aprenda Zig com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “O alocador de testes detecta vazamentos” é grátis?
Sim — o texto completo de “O alocador de testes detecta vazamentos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “O alocador de testes detecta vazamentos”?
Detecte erros de memória automaticamente. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “O alocador de testes detecta vazamentos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Escrevendo blocos test
- Asserções com std.testing
- O alocador de testes detecta vazamentos
- Executando e filtrando testes