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 从公开仓库中收录这些内容。

举报或申请下架