Cache LRU em Zig: HashMap e Lista Duplamente Encadeada
Para implementar um cache LRU em Zig, use um HashMap para encontrar entradas e uma lista duplamente encadeada para registrar a ordem de uso. O item acessado mais …
Para implementar um cache LRU em Zig, use um HashMap para encontrar entradas e uma lista duplamente encadeada para registrar a ordem de uso. O item acessado mais …
Para mapear um arquivo em memória com Zig, abra o arquivo, obtenha e valide seu tamanho, crie o mapeamento com std.posix.mmap, use o slice retornado somente enquanto o …
Para criar um array de strings em Zig, use [_][]const u8{ "Ana", "Bruno", "Carla" }. O tipo inferido será [3][]const u8: um array de três …
@memcpy em Zig O @memcpy copia dados de um slice de origem para um slice de destino. Os slices devem ter o mesmo comprimento e não devem se sobrepor na memória. É a forma …
@sizeOf em Zig O @sizeOf retorna o tamanho de armazenamento de um tipo em bytes, incluindo qualquer padding de alinhamento. É o equivalente do sizeof do C, mas disponível …
O Arena Allocator é provavelmente o padrão de alocação mais poderoso em Zig. No artigo anterior apresentamos brevemente os allocators. Agora vamos explorar o Arena …
Cheatsheet: Ponteiros em Zig Zig tem um sistema de ponteiros mais preciso que C, distinguindo entre ponteiros simples, multi-ponteiros, slices e ponteiros com sentinela. …
O gargalo de performance numero um em software moderno nao e a CPU — e o acesso a memoria. Uma cache miss pode custar 100x mais que uma operacao aritmetica. Neste artigo, …
Introdução Obter informações sobre o sistema é útil para logs, diagnóstico, ajuste de performance e decisões em tempo de execução (como número de threads). Zig permite …
Introdução O FixedBufferAllocator permite alocar memória a partir de um buffer pré-existente, sem recorrer ao heap. Isso é particularmente útil em sistemas embarcados, …
Introdução O GeneralPurposeAllocator (GPA) é o alocador de uso geral recomendado em Zig para desenvolvimento e depuração. Ele fornece detecção de erros como double-free, …
Nos artigos anteriores, exploramos os allocators da biblioteca padrão: tipos de allocators e arena allocator. Agora vamos dar o próximo passo: criar allocators …
Dangling Pointer em Zig — O que é e Como Evitar Definição Um dangling pointer (ponteiro pendente) é um ponteiro que referencia uma posição de memória que já foi liberada …
Estratégias de Alocação de Memória em Zig Zig não tem garbage collector — a gestão de memória é explícita e controlada pelo desenvolvedor através de allocators. Esta …
General Purpose Allocator em Zig — O que é e Como Usar Definição O General Purpose Allocator (GPA, std.heap.GeneralPurposeAllocator) é o alocador de uso geral da …
Masterclass: Gerenciamento de Memória em Zig Bem-vindo à série mais completa sobre gerenciamento de memória em Zig em português. Esta masterclass foi projetada para …
memset em Zig (@memset) O equivalente do memset em Zig é o builtin @memset: ele preenche uma região de memória (slice) com um valor específico. É a forma idiomática de …
Introdução errdefer é uma das features mais elegantes de Zig. Diferente de defer (que executa sempre), errdefer executa apenas quando a função retorna um erro. Isso …
Perguntas de Entrevista sobre Memória em Zig Gerenciamento de memória é o tema mais frequente e mais importante em entrevistas de programação de sistemas. Zig adota uma …
Stack vs Heap em Zig — O que é e Como Usar Definição Stack (pilha) e Heap (monte) são as duas regiões principais de memória onde dados podem ser armazenados durante a …
std.heap — Alocadores de Memória O módulo std.heap fornece implementações concretas da interface std.mem.Allocator. Cada alocador tem características diferentes, …
ArenaAllocator — Alocador de Arena O ArenaAllocator é um alocador que permite liberar toda a memória alocada de uma vez. Chamadas individuais a free() são no-ops — a …
page_allocator — Alocador de Páginas O std.heap.page_allocator é um alocador que solicita memória diretamente ao sistema operacional em unidades de páginas. Ele usa mmap …
std.io.FixedBufferStream — Stream sobre Buffer Fixo O FixedBufferStream é um tipo que implementa as interfaces Reader e Writer sobre um buffer de tamanho fixo em memória. …
std.mem — Operações de Memória O módulo std.mem fornece funções fundamentais para trabalhar com memória e slices no Zig. Ele inclui operações de comparação, busca, cópia, …
std.mem.Allocator — Interface de Alocação A interface Allocator é o mecanismo central de alocação de memória em Zig. Em vez de usar uma função global como malloc, o Zig …
No artigo anterior, exploramos os fundamentos de stack e heap. Agora é hora de mergulhar no coração do gerenciamento de memória em Zig: os allocators. Zig oferece uma …
Zig para Segurança Cibernética A maioria das vulnerabilidades críticas de software (buffer overflows, use-after-free, null pointer dereferences) são causadas por erros de …