alloc, free, create, destroy
As operações fundamentais do alocador.
alloc, free, create, destroy é 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.
Quatro operações essenciais
Um allocator oferece quatro chamadas principais: alloc e free para vários itens, create e destroy para um único valor.
alloc retorna uma fatia
Use alloc para solicitar uma sequência de itens. Você informa o tipo do elemento e uma quantidade, e recebe uma fatia com essa quantidade de elementos.
const buf = try a.alloc(u8, 64);alloc pode falhar
Como o heap pode ficar sem espaço, alloc retorna uma união de erro. A palavra-chave try trata o caso OutOfMemory de forma simples para você.
const list = try a.alloc(i32, 10);free devolve a memória
Quando terminar, chame free com a mesma fatia exata que recebeu. Se esquecer, o GeneralPurposeAllocator informará um vazamento.
a.free(buf);Use defer free imediatamente
Um hábito comum é escrever defer a.free logo depois de um alloc bem-sucedido, para que a limpeza seja executada independentemente de como o escopo termine.
const buf = try a.alloc(u8, 64);
defer a.free(buf);create para um valor
Quando precisar de exatamente um valor no heap, use create. Ele recebe um tipo e retorna um ponteiro para um único item em memória nova.
const node = try a.create(Node);Escreva por meio do ponteiro
create fornece um ponteiro, portanto você define o valor por meio dele usando .* antes de utilizar os dados apontados.
node.* = Node{ .value = 42 };destroy libera o ponteiro
Libere um valor criado com destroy, passando o mesmo ponteiro retornado por create. Essa é a chamada correspondente a create.
a.destroy(node);Combine os pares
A regra é rigorosa: alloc corresponde a free, e create corresponde a destroy. Nunca os troque nem libere uma fatia que você não alocou.
Libere com o mesmo allocator
Sempre libere a memória usando o mesmo allocator que a produziu. Misturar allocators causa corrupção que o compilador não consegue detectar.
Erros ignoram o corpo de defer
Se o próprio alloc falhar, nenhuma memória terá sido criada, portanto não haverá nada para liberar. É por isso que defer free vem depois de um alloc bem-sucedido. ✅
Verificação rápida
Associe cada chamada de alocação à chamada correta de liberação.
Recapitulação
Você aprendeu os pares: alloc/free para fatias e create/destroy para valores únicos, sempre liberados com o mesmo allocator. 🎯
Perguntas Frequentes
A aula “alloc, free, create, destroy” é grátis?
Sim — o texto completo de “alloc, free, create, destroy” é 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 “alloc, free, create, destroy”?
As operações fundamentais do alocador. 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 “alloc, free, create, destroy”?
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
- Por que Zig não tem alocações ocultas
- A interface de alocação
- alloc, free, create, destroy
- Listas dinâmicas com ArrayList