All skills
wshobson avatar

/memory-safety-patterns

@be57c0b
by Seth Hobsonwshobson/agents40k stars
4,281

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.

Use this Skill: https://skilld.dev/gh/wshobson/agents/memory-safety-patterns

This session only. Nothing lands on disk.

SKILL.md

≈57 tokens always: the name and description. ≈583 when used: this file. ≈2.8k more on demand in 1 file.

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 safe
More 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

# 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

Source: SKILL.md on GitHub

No alerts16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill provides educational content and code patterns for memory-safe programming in Rust, C++, and C. No security issues or malicious patterns were detected.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • Runlayer6mo

    1 file scanned · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at be57c0b. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 days ago.

Activeupdated 4 months ago
  • Rust
  • c++
  • c
  • memory-safety
  • raii
  • ownership
  • smart-pointers
  • systems-programming
  • resource-management

README badge

README badge for wshobson/agents/memory-safety-patterns

Teaches memory-safety patterns including RAII, ownership models, smart pointers, and resource management across Rust, C++, and C. Use when writing systems code, managing file/socket resources, or preventing use-after-free and memory leaks.

Generated from the current SKILL.md.

Does this skill cover all three languages equally?
The skill covers Rust, C++, and C with patterns applicable across all three. Rust has the strongest memory safety guarantees through ownership; C++ relies on smart pointers and RAII; C requires manual management.
What specific memory bugs does this address?
The skill covers use-after-free, double-free, memory leaks, buffer overflow, dangling pointers, and data races. Each has dedicated prevention strategies.
Are there code examples in the skill?
The skill references detailed patterns and worked examples in a `references/details.md` file. The main SKILL.md provides conceptual guidance, best practices, and debugging tool commands.
Does this include concurrency and thread safety?
Yes. The skill covers data races and concurrent access as part of memory safety, with Rust's ownership model and ThreadSanitizer mentioned for detection.
What debugging tools does this recommend?
The skill includes AddressSanitizer, Valgrind, Rust Miri, and ThreadSanitizer with command examples for Clang, GCC, and Rust.

Generated from the current SKILL.md. These answers refresh after source changes.