Resumen del capítulo
Zig divide la memoria en: memoria de tiempo de compilación, stack (pila) y heap (memoria dinámica). Los datos conocidos en compilación se incluyen en el propio binario.
- Si el contenido no es conocido hasta la ejecución, es pequeño y de tamaño fijo - se almacenará en stack
- Si el dato es grande / variable se almacenará en el heap.
- El acceso al heap es mucho más lento que al stack.
- Los punteros nos permiten acceder y modificar los datos en las direcciones de memoria. Un ejemplo de punteros (fat pointer) son los propios slices, que contienen dirección y la longitud.
- Las cadenas en Zig se representan como slices, slices con centinela, punteros con centinela o arrays de bytes.
- Para leer texto del teclado, usamos stdin, un buffer y si es necesario un allocator (asignador) de memoria para gestionar la memoria dinámica (heap). Con defer se libera esa memoria asignada al llegar al cierre del bloque.
- Para comparar cadenas en Zig usamos std.mem.eql y no ==.