mcpField
M
memory-safety-patterns

memory-safety-patterns

github.com/wshobson開発41.9k11.9k 回インストール2 週間前に更新
リポジトリ

memory-safety-patterns について

リソース管理やメモリ問題の調査に取り組むシステム開発者向けの、言語横断のメモリ安全ガイドです。RAII、所有権、スマートポインター、デバッグツールを扱います。

主な機能

  1. 01一般的なメモリバグの分類
  2. 02RAII とリソース寿命の管理
  3. 03所有権とスマートポインターの実践
  4. 04言語ごとの安全性の違い
  5. 05メモリデバッグツールの例

活用シーン

  1. 01メモリ安全なシステムコードの作成
  2. 02ファイル、ソケット、メモリの管理
  3. 03リーク、ダングリングポインター、データ競合の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wshobson/agents --skill memory-safety-patterns

インストール後、Claude Code で/memory-safety-patternsを入力して読み込まれたか確認します。

同梱ファイルreferences/details.md

詳細

メモリ安全性パターン

RAII、所有権、スマートポインタ、リソース管理など、メモリ安全なプログラミングのための言語横断的パターンです。

このスキルを使う場面

  • メモリ安全なシステムコードを書くとき
  • リソース(ファイル、ソケット、メモリ)を管理するとき
  • use-after-free やリークを防ぐとき
  • RAII パターンを実装するとき
  • 安全性の観点で言語を選ぶとき
  • メモリの問題をデバッグするとき

中核となる概念

1. メモリバグのカテゴリ
バグの種類説明防止策
Use-after-free解放済みメモリにアクセスする所有権、RAII
Double-free同じメモリを二度解放するスマートポインタ
メモリリークメモリを決して解放しないRAII、GC
バッファオーバーフローバッファの終端を越えて書き込む境界チェック
ダングリングポインタ解放済みメモリへのポインタライフタイム追跡
データ競合同期されない並行アクセス所有権、Sync
2. 安全性のスペクトラム
Manual (C) → Smart Pointers (C++) → Ownership (Rust) → GC (Go, Java)
Less safe                                              More safe
More control                                           Less control

詳細なパターンと実例

詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション階層では不十分な場合、そのファイルを読んでください。

ベストプラクティス

やるべきこと
  • RAII を優先する - リソースのライフタイムをスコープに結び付ける
  • スマートポインタを使う - C++ では生ポインタを避ける
  • 所有権を理解する - 誰が何を所有しているかを把握する
  • 境界をチェックする - 安全なアクセス方法を使う
  • ツールを使う - AddressSanitizer、Valgrind、Miri
やってはいけないこと
  • 生ポインタを使わない - C と連携する場合を除く
  • ローカル参照を返さない - ダングリングポインタになる
  • コンパイラの警告を無視しない - 警告はバグを検出する
  • unsafe を不注意に使わない - Rust では最小限にする
  • スレッド安全性を仮定しない - 明示する

デバッグツール

# 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

コメント