typestar

Allocators en Zig

Nada reserva memoria a tus espaldas: rentas bytes a un allocator, los devuelves, te auditan.

const std = @import("std");

pub fn main() !void {
    // Nothing allocates without being handed an allocator.
    var gpa = std.heap.DebugAllocator(.{}){};
    defer _ = gpa.deinit(); // reports leaks at exit
    const alloc = gpa.allocator();

    const line = try alloc.alloc(u8, 24);
    defer alloc.free(line);

    @memset(line, '~');
    std.debug.print("{s}\n", .{line});
    std.debug.print("rented {d} bytes, returned on exit\n", .{line.len});
}

Cómo funciona

  1. DebugAllocator rastrea cada reserva; su deinit reporta fugas al salir.
  2. alloc.alloc(u8, 24) renta un slice; defer alloc.free(line) lo devuelve.
  3. @memset llena los bytes rentados antes de imprimirlos.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
419
Tokens
119
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 110 segundos.

Escribe este fragmento

Paso 1 de 3 en Memoria; paso 19 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →