alloc, free, create, destroy
Las operaciones fundamentales del allocator.
alloc, free, create, destroy es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Cuatro operaciones fundamentales
Un asignador le ofrece cuatro llamadas clave: alloc y free para varios elementos, y create y destroy para un único valor.
alloc devuelve un slice
Use alloc para solicitar una secuencia de elementos. Indique el tipo de elemento y una cantidad, y recibirá un slice con ese número de elementos.
const buf = try a.alloc(u8, 64);alloc puede fallar
Como el montón puede quedarse sin espacio, alloc devuelve una unión de errores. La palabra clave try gestiona correctamente el caso OutOfMemory.
const list = try a.alloc(i32, 10);free lo devuelve
Cuando termine, llame a free con el slice exacto que obtuvo. Si lo olvida, GeneralPurposeAllocator informará de una fuga.
a.free(buf);defer free inmediatamente
Una práctica habitual es escribir defer a.free justo después de un alloc correcto, para que la limpieza se ejecute independientemente de cómo termine el ámbito.
const buf = try a.alloc(u8, 64);
defer a.free(buf);create para un valor
Cuando necesita exactamente un valor en el montón, use create. Recibe un tipo y devuelve un puntero a un único elemento de memoria nueva.
const node = try a.create(Node);Escriba a través del puntero
create le proporciona un puntero, así que establece el valor a través de él con .* antes de usar los datos a los que apunta.
node.* = Node{ .value = 42 };destroy del puntero
Libere un valor creado con destroy, pasando el mismo puntero que devolvió create. Es la llamada complementaria de create.
a.destroy(node);Empareje las operaciones
La regla es estricta: alloc se empareja con free, y create con destroy. Nunca los intercambie ni libere un slice que no haya asignado.
Libere con el mismo asignador
Libere siempre la memoria usando el mismo asignador que la produjo. Mezclar asignadores provoca daños que el compilador no puede detectar.
Los errores omiten el cuerpo de defer
Si alloc falla, no se ha creado memoria, así que no hay nada que liberar. Por eso defer free va después de un alloc correcto. ✅
Comprobación rápida
Empareje cada llamada de asignación con su llamada de liberación correcta.
Repaso
Ha aprendido los pares: alloc/free para los slices y create/destroy para los valores individuales, que siempre se liberan con el mismo allocator. 🎯
Preguntas frecuentes
¿La lección «alloc, free, create, destroy» es gratis?
Sí — el texto completo de «alloc, free, create, destroy» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «alloc, free, create, destroy»?
Las operaciones fundamentales del allocator. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «alloc, free, create, destroy»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Por qué Zig no tiene asignaciones ocultas
- La interfaz Allocator
- alloc, free, create, destroy
- Listas dinámicas con ArrayList