wshobson/patrones-de-seguridad-de-memoria

Implementa programación segura en memoria con RAII, propiedad, punteros inteligentes y gestión de recursos en Rust, C++ y C. Útil al escribir código de sistemas seguro, gestionar recursos o prevenir errores de memoria.

¿Qué es patrones-de-seguridad-de-memoria?

Este skill, wshobson/memory-safety-patterns, proporciona directrices y patrones para escribir código de sistemas seguro en memoria, compatible con Rust, C++ y C. Su objetivo principal es prevenir errores comunes de memoria, como fugas, dobles liberaciones, uso después de liberación y desbordamientos de búfer, mediante la aplicación de técnicas como RAII (Resource Acquisition Is Initialization), propiedad (ownership), punteros inteligentes (smart pointers) y gestión explícita de recursos. El skill es útil para desarrolladores que trabajan en sistemas de bajo nivel, kernels, firmware o aplicaciones donde la seguridad y la corrección de memoria son críticas. Funciona proporcionando ejemplos de código, mejores prácticas y advertencias sobre antipatrones, todo basado en la documentación SKILL.md. Al activarlo, el agente AI asiste al usuario en la identificación de posibles vulnerabilidades de memoria y sugiere implementaciones más seguras según el lenguaje de programación en uso.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wshobson/agents/tree/main/skills/memory-safety-patterns

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace patrones-de-seguridad-de-memoria?

Implementa programación segura en memoria con RAII, propiedad, punteros inteligentes y gestión de recursos en Rust, C++ y C. Útil al escribir código de sistemas seguro, gestionar recursos o prevenir errores de memoria.

Introducción

Este skill proporciona patrones y guías para prevenir errores de memoria comunes como fugas de memoria, dobles liberaciones, uso después de liberación (use-after-free) y desbordamientos de búfer. Se centra en tres lenguajes principales: Rust, C++ y C, cada uno con sus propias estrategias de seguridad.

Lenguajes y Patrones

Rust

  • Propiedad (Ownership): Cada valor tiene un único dueño. Al transferir la propiedad, el dueño anterior no puede usar el valor.
  • Préstamo (Borrowing): Permite acceder a un valor sin transferir la propiedad, mediante referencias inmutables (&T) o mutables (&mut T).
  • Duración (Lifetimes): El compilador verifica que las referencias no sobrevivan a los datos a los que apuntan.
  • Punteros inteligentes: Box<T>, Rc<T>, Arc<T>, RefCell<T> para gestión de memoria en montículo y conteo de referencias.

C++

  • RAII (Resource Acquisition Is Initialization): Asociar la adquisición de recursos con la inicialización de objetos y su liberación con la destrucción.
  • Punteros inteligentes: std::unique_ptr, std::shared_ptr, std::weak_ptr para gestión automática de memoria.
  • Movimiento (Move semantics): Transferencia eficiente de recursos con std::move.
  • Contenedores estándar: std::vector, std::string, etc., que gestionan su propia memoria.

C

  • Asignación y liberación manual: malloc, calloc, realloc, free.
  • Patrones de gestión: Establecer punteros a NULL después de liberar, comprobar valores devueltos por funciones de asignación.
  • Análisis estático: Uso de herramientas como Valgrind, AddressSanitizer para detectar fugas y corrupción.

Mejores Prácticas

  1. Preferir RAII: En C++ y Rust, usar RAII para recursos (memoria, archivos, sockets).
  2. Evitar punteros crudos en C++: Usar std::unique_ptr o std::shared_ptr en lugar de new/delete.
  3. Usar contenedores estándar: En C++, std::vector y std::string gestionan memoria automáticamente.
  4. En Rust, confiar en el compilador: Los errores de préstamo se detectan en tiempo de compilación.
  5. En C, inicializar siempre los punteros: Asignar NULL después de free para evitar usos colgantes.

Ejemplo Rápido

Rust

fn main() {
    let data = Box::new(42); // Propiedad transferida a data
    println!("{}", data);   // data se libera al salir del ámbito
}

C++

#include <memory>
int main() {
    auto ptr = std::make_unique<int>(42); // Puntero inteligente
    // No es necesario delete
    return 0;
}

C

#include <stdlib.h>
int main() {
    int *ptr = (int*)malloc(sizeof(int));
    if (ptr) {
        *ptr = 42;
        free(ptr);
        ptr = NULL; // Evitar uso colgante
    }
    return 0;
}

Advertencias

  • No mezclar estilos: En C++, no mezclar new/delete con punteros inteligentes a menos que sea necesario.
  • Ciclos de referencia en Rust: Con Rc/RefCell, pueden ocurrir fugas de memoria si hay ciclos; usar Weak para romperlos.
  • Aliasing en C: El uso de punteros a la misma memoria puede causar comportamientos indefinidos; usar restrict cuando sea posible.

Compatibilidad

  • Rust: 1.0+
  • C++: C++11+
  • C: C99+

Referencias

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

wshobson/accessibility-compliance

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

wshobson/airflow-dag-patterns

Build production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.

wshobson/angular-migration

Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.

wshobson/anti-reversing-techniques

Understand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.

wshobson/api-design-principles

Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.

wshobson/architecture-decision-records

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

wshobson/architecture-patterns

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use this skill when designing clean architecture for a new microservice, when refactoring a monolith to use bounded contexts, when implementing hexagonal or onion architecture patterns, or when debugging dependency cycles between application layers.

wshobson/async-python-patterns

Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.

wshobson/attack-tree-construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

wshobson/auth-implementation-patterns

Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.

wshobson/avoid-ai-writing

Audit and rewrite prose so it stops reading as machine-generated. Use this skill when asked to remove AI-isms, clean up AI writing, edit a draft for AI tells, audit a README, changelog, release note, PR description, or blog post for machine-sounding prose, or make text sound less like AI. Supports a detect-only mode, a rewrite mode, and an edit-in-place mode, with optional voice and context profiles.

wshobson/backtesting-frameworks

Build robust backtesting systems for trading strategies with proper handling of look-ahead bias, survivorship bias, and transaction costs. Use when developing trading algorithms, validating strategies, or building backtesting infrastructure.

wshobson/bash-defensive-patterns

Master defensive Bash programming techniques for production-grade scripts. Use when writing robust shell scripts, CI/CD pipelines, or system utilities requiring fault tolerance and safety.

wshobson/bats-testing-patterns

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

wshobson/bazel-build-optimization

Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.

wshobson/before-you-build

Pre-build product and feature risk review for founders, product managers, and AI-assisted builders. Use this skill when the user is about to build a landing page, MVP, SaaS product, internal tool, agent workflow, or major feature and needs to check demand, positioning, monetization, retention, trust, distribution, and adoption risk before implementation starts.

wshobson/billing-automation

Build automated billing systems for recurring payments, invoicing, subscription lifecycle, and dunning management. Use when implementing subscription billing, automating invoicing, or managing recurring payment systems.

wshobson/binary-analysis-patterns

Master binary analysis patterns including disassembly, decompilation, control flow analysis, and code pattern recognition. Use when analyzing executables, understanding compiled code, or performing static analysis on binaries.

wshobson/block-no-verify-hook

Configure a PreToolUse hook to prevent AI agents from skipping git pre-commit hooks with --no-verify and other bypass flags. Use when setting up Claude Code projects that enforce commit quality gates.

wshobson/brand-landingpage

Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens — use frontend-design instead.

Skills relacionados