Memory Safety Patterns

作者 wshobson46891e7e60da無授權條款收錄於 2026年10月8日更新於 2026年10月8日

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.

AI 產生的概覽

跨語言的記憶體安全程式設計模式指南,涵蓋 Rust、C++ 與 C。

功能
此技能提供跨 Rust、C++ 與 C 的記憶體安全程式設計參考指引。內容涵蓋記憶體錯誤類別(例如釋放後使用、重複釋放、記憶體洩漏與緩衝區溢位)、從手動記憶體管理到垃圾回收的安全光譜,以及 RAII、智慧指標與所有權等最佳實務。它也列出 AddressSanitizer、Valgrind、ThreadSanitizer 與 Rust Miri 等除錯工具,並在隨附的參考檔案中提供更多模式。
適用情境
適用於撰寫 Rust、C++ 或 C 系統程式碼、管理檔案、通訊端或記憶體等資源,或防止釋放後使用、記憶體洩漏與懸空指標的情境。也適合在語言之間取捨安全性以及除錯記憶體問題時使用。
執行需求
不含指令碼,僅提供說明與參考文件。若要依除錯指引操作,需要具備 Clang 或 GCC、Valgrind,以及含 Miri 的 nightly Rust 工具鏈等工具鏈與工具。

Memory Safety Patterns

Cross-language patterns for memory-safe programming including RAII, ownership, smart pointers, and resource management.

When to Use This Skill

  • Writing memory-safe systems code
  • Managing resources (files, sockets, memory)
  • Preventing use-after-free and leaks
  • Implementing RAII patterns
  • Choosing between languages for safety
  • Debugging memory issues

Core Concepts

1. Memory Bug Categories

Bug TypeDescriptionPrevention
Use-after-freeAccess freed memoryOwnership, RAII
Double-freeFree same memory twiceSmart pointers
Memory leakNever free memoryRAII, GC
Buffer overflowWrite past buffer endBounds checking
Dangling pointerPointer to freed memoryLifetime tracking
Data raceConcurrent unsynchronized accessOwnership, Sync

2. Safety Spectrum

Manual (C) → Smart Pointers (C++) → Ownership (Rust) → GC (Go, Java)Less safe                                              More safeMore control                                           Less control

Detailed patterns and worked examples

Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.

Best Practices

Do's

  • Prefer RAII - Tie resource lifetime to scope
  • Use smart pointers - Avoid raw pointers in C++
  • Understand ownership - Know who owns what
  • Check bounds - Use safe access methods
  • Use tools - AddressSanitizer, Valgrind, Miri

Don'ts

  • Don't use raw pointers - Unless interfacing with C
  • Don't return local references - Dangling pointer
  • Don't ignore compiler warnings - They catch bugs
  • Don't use unsafe carelessly - In Rust, minimize it
  • Don't assume thread safety - Be explicit

Debugging Tools

bash
# AddressSanitizer (Clang/GCC)clang++ -fsanitize=address -g source.cpp
# Valgrindvalgrind --leak-check=full ./program
# Rust Miri (undefined behavior detector)cargo +nightly miri run
# ThreadSanitizerclang++ -fsanitize=thread -g source.cpp

來源與署名

來源:wshobson/agents位於plugins/systems-programming/skills/memory-safety-patterns提交46891e7

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架