<< All versions
Skill v1.0.1
currentAutomated scan100/100wshobson/agents/memory-safety-patterns
4 files
──Details
PublishedJune 20, 2026 at 08:07 PM
Content Hashsha256:e23ee740f583c16e...
Git SHAcc37bfdd292c
Bump Typepatch
──Files
Files (1 file, 2.5 KB)
SKILL.md2.5 KBactive
SKILL.md · 78 lines · 2.5 KB
version: "1.0.1" name: memory-safety-patterns description: 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.
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 Type | Description | Prevention | |
|---|---|---|---|
| Use-after-free | Access freed memory | Ownership, RAII | |
| Double-free | Free same memory twice | Smart pointers | |
| Memory leak | Never free memory | RAII, GC | |
| Buffer overflow | Write past buffer end | Bounds checking | |
| Dangling pointer | Pointer to freed memory | Lifetime tracking | |
| Data race | Concurrent unsynchronized access | Ownership, 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