スキル memory-safety-patterns
🛡️

memory-safety-patterns

安全

Implementar Padrões de Segurança de Memória

こちらからも入手できます: wshobson

Escreva código seguro e sem falhas usando padrões comprovados de segurança de memória em Rust, C++ e C. Previna vazamentos, use-after-free e estouros de buffer com RAII, modelos de ownership e smart pointers.

対応: Claude Codex Code(CC)
🥉 75 ブロンズ
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「memory-safety-patterns」を使用しています。 Como previno vazamentos de memória ao abrir arquivos em C++?

期待される結果:

Use RAII com uma classe wrapper de arquivo inteligente ou std::fstream. O arquivo fecha automaticamente quando o objeto é destruído, mesmo se uma exceção ocorrer. Exemplo: std::fstream file("data.txt"); - o destruidor lida com cleanup automaticamente.

「memory-safety-patterns」を使用しています。 Qual é a diferença entre Box, Rc e Arc em Rust?

期待される結果:

Box<T> para ownership único com alocação em heap. Rc<T> para ownership compartilhado (single-threaded) - incrementa contagem de referências no clone. Arc<T> para ownership compartilhado atômico entre threads - contagem de referências thread-safe.

「memory-safety-patterns」を使用しています。 Como faço verificação de limites de forma segura?

期待される結果:

Em C++, use std::vector::at() que lança std::out_of_range, ou std::span para visualizações de array. Em Rust, indexar com [] causa panic fora dos limites, enquanto .get() retorna Option para manipulação segura. Prefira iteradores para evitar verificação manual de limites.

セキュリティ監査

安全
v1 • 2/25/2026

All 56 static findings are false positives. The skill contains only documentation and code examples for memory safety patterns. Thread spawning (thread::spawn) was misidentified as process spawning. Markdown backticks for code formatting were misidentified as shell execution. Documentation URLs and debugging tool references are legitimate educational content.

2
スキャンされたファイル
640
解析された行数
0
検出結果
1
総監査数
セキュリティ問題は見つかりませんでした
監査者: claude

品質スコア

38
アーキテクチャ
100
保守性
87
コンテンツ
50
コミュニティ
100
セキュリティ
100
仕様準拠

作れるもの

Programação de Sistemas

Escreva sistemas operacionais, drivers ou software embarcado livre de vulnerabilidades de corrupção de memória.

Aplicações Críticas para Segurança

Construa aplicações onde segurança de memória é obrigatória: criptografia, serviços de rede, processamento de arquivos.

Modernização de Código Legado

Aplique padrões de segurança de memória ao refatorar codebases C/C++ para reduzir bugs e melhorar confiabilidade.

これらのプロンプトを試す

Implementação Básica de RAII
Mostre como implementar um padrão RAII em C++ para uma classe de file handle. Inclua semântica adequada de cópia/movimento e garanta que o arquivo seja fechado automaticamente quando o objeto sair do escopo.
Exemplo de Ownership em Rust
Explique como o ownership do Rust previne bugs de use-after-free. Mostre um exemplo com uma struct que holds uma referência, incluindo anotações de lifetime e quando usar Box, Rc e Arc.
Gerenciamento de Recursos em C
Escreva uma função em C que abre um arquivo, aloca memória e processa dados. Use o padrão goto-cleanup para garantir que todos os recursos sejam adequadamente liberados em caso de erro.
Contador Thread-Safe
Implemente um contador thread-safe em C++ usando atomics e mutex, e em Rust usando Arc e Mutex. Mostre como cada linguagem previne data races.

ベストプラクティス

  • Preferir RAII e smart pointers em vez de gerenciamento manual de memória para garantir cleanup automático
  • Usar o borrow checker do Rust em vez de lutar contra ele - ele previne bugs reais
  • Executar AddressSanitizer e Valgrind durante o desenvolvimento para detectar problemas de memória cedo

回避

  • Usar ponteiros brutos em C++ em vez de smart pointers - leva a vazamentos e ponteiros pendentes
  • Ignorar avisos do compilador sobre referências pendentes - eles indicam bugs reais
  • Usar blocos unsafe em Rust sem documentar o porquê e isolá-los do código seguro

よくある質問

O que é RAII e por que isso importa?
RAII (Resource Acquisition Is Initialization) vincula o lifetime do recurso ao lifetime do objeto. Quando o objeto sai do escopo, seu destruidor executa e libera os recursos. Isso previne vazamentos e garante cleanup mesmo quando exceções ocorrem.
Como o Rust previne bugs de memória?
Rust usa um sistema de ownership onde cada valor tem exatamente um dono. Quando o dono sai do escopo, o valor é descartado. O borrow checker impõe essas regras em tempo de compilação, prevenindo use-after-free, double-free e data races.
Quando devo usar smart pointers em C++?
Use unique_ptr para ownership único (escolha padrão). Use shared_ptr quando múltiplas partes do código precisam possuir o mesmo objeto. Use weak_ptr para quebrar ciclos em grafos shared_ptr. Evite ponteiros brutos exceto ao interagir com código C.
O que é o padrão goto-cleanup em C?
Um padrão onde todas as alocações de recursos acontecem no início, e um único rótulo de cleanup libera tudo em ordem reversa. Isso garante que recursos sejam liberados mesmo quando erros ocorrem em qualquer ponto da função, evitando vazamentos.
Como escolho entre Rust e C++ para segurança de memória?
Rust fornece garantias mais fortes em tempo de compilação através de ownership e borrowing. C++ requer mais disciplina mas dá mais controle. Escolha Rust para novos projetos onde segurança de memória é crítica. Use C++ ao interagir com codebases C++ existentes ou quando performance máxima é necessária.
Quais ferramentas de debug ajudam a detectar problemas de memória?
AddressSanitizer (ASan) detecta use-after-free, vazamentos e estouros de buffer. Valgrind detecta erros de memória em C/C++. Rust Miri detecta comportamento indefinido. ThreadSanitizer encontra data races. Use essas ferramentas durante o desenvolvimento e em pipelines de CI.

開発者の詳細

ファイル構成