memory-safety-patterns
Faz seu agente escrever código mais seguro em linguagens como Rust e C++. Ele previne erros comuns de memória, garantindo a estabilidade e a confiabilidade do software.
O que ela faz
Ajuda a escrever código de computador que gerencia a memória de forma segura, evitando erros comuns como vazamentos ou uso de memória já liberada. Isso é feito usando técnicas como RAII, ponteiros inteligentes e controle de propriedade.
Quando usar
- ✓Ao criar programas que precisam ser muito confiáveis (sistemas operacionais, jogos).
- ✓Quando você quer evitar que seu programa trave ou apresente comportamentos estranhos por causa de erros de memória.
- ✓Ao aprender ou usar linguagens como C++, Rust ou C para garantir a segurança.
Exemplo do que pedir para a IA
“Como posso evitar vazamentos de memória em C++ usando RAII?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Essa ferramenta ensina padrões de programação que associam o tempo de vida de recursos (como memória ou arquivos) ao tempo de vida de objetos. Quando um objeto é criado, ele adquire um recurso; quando o objeto é destruído, ele libera o recurso automaticamente.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill memory-safety-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/systems-programming/skills/memory-safety-patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões de Segurança de Memória
Padrões entre linguagens para programação com segurança de memória, incluindo RAII, propriedade, ponteiros inteligentes e gerenciamento de recursos.
Quando Usar Esta Habilidade
- Escrever código de sistema com segurança de memória
- Gerenciar recursos (arquivos, sockets, memória)
- Prevenir uso-após-liberação e vazamentos
- Implementar padrões RAII
- Escolher entre linguagens para segurança
- Depurar problemas de memória
Conceitos Principais
1. Categorias de Bugs de Memória
| Tipo de Bug | Descrição | Prevenção |
|---|---|---|
| Uso-após-liberação | Acessar memória liberada | Propriedade, RAII |
| Liberação Dupla | Liberar a mesma memória duas vezes | Ponteiros inteligentes |
| Vazamento de memória | Nunca liberar memória | RAII, GC |
| Estouro de buffer | Escrever além do fim do buffer | Verificação de limites |
| Ponteiro pendente | Ponteiro para memória liberada | Rastreamento de tempo de vida |
| Corrida de dados | Acesso concorrente não sincronizado | Propriedade, Sincronização |
2. Espectro de Segurança
Manual (C) → Smart Pointers (C++) → Ownership (Rust) → GC (Go, Java)
Less safe More safe
More control Less control
Padrões Detalhados e Exemplos Práticos
A documentação detalhada dos padrões está em references/details.md. Leia este arquivo quando o nível de navegação acima for insuficiente.
Melhores Práticas
Fazer
- Prefira RAII - Vincule o tempo de vida do recurso ao escopo
- Use ponteiros inteligentes - Evite ponteiros brutos em C++
- Entenda a propriedade - Saiba quem é o dono de quê
- Verifique os limites - Use métodos de acesso seguros
- Use ferramentas - AddressSanitizer, Valgrind, Miri
Não Fazer
- Não use ponteiros brutos - Exceto ao interagir com C
- Não retorne referências locais - Ponteiro pendente
- Não ignore avisos do compilador - Eles pegam bugs
- Não use
unsafedescuidadamente - Em Rust, minimize seu uso - Não assuma segurança de thread - Seja explícito
Ferramentas de Depuração
# AddressSanitizer (Clang/GCC)
clang++ -fsanitize=address -g source.cpp
# Valgrind
valgrind --leak-check=full ./program
# Rust Miri (undefined behavior detector)
cargo +nightly miri run
# ThreadSanitizer
clang++ -fsanitize=thread -g source.cpp
Perguntas frequentes
O que é RAII?
RAII significa 'Resource Acquisition Is Initialization'. É uma técnica onde a aquisição de um recurso (como alocar memória) acontece na inicialização de um objeto, e a liberação acontece quando o objeto é destruído.
O que são ponteiros inteligentes?
São objetos que se comportam como ponteiros, mas que gerenciam automaticamente a memória que apontam, ajudando a evitar erros como vazamentos ou acesso a memória inválida.
Qual a diferença entre C e Rust em relação à segurança de memória?
C exige que o programador gerencie a memória manualmente, o que é propenso a erros. Rust usa um sistema de 'propriedade' que garante a segurança de memória em tempo de compilação, sem a necessidade de um coletor de lixo.
Detalhes
Descrição original do autor
Implement memory-safe programming with RAII, ownership, smart pointers, and resource management across Rust, C++, and C. Use when writing safe systems code, managing resources, or preventing memory bugs.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4966
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC