Yeda AI Tips · #099

English

Un puntero crudo con ownership en C++ bloquea el code review

Un puntero crudo con ownership en C++ es un bug que bloquea el review. No es un detalle de estilo ni un "lo limpiamos después": es un bloqueador. La gestión manual de memoria sin un wrapper es exactamente donde se esconden los leaks, los double free y los use-after-free, y además es la señal más fácil de aplicar mecánicamente: si un T* es dueño de lo que apunta, el review se detiene hasta que deje de serlo.

Esto importa el doble ahora que los agentes de código escriben buena parte de tus diffs. Los modelos entrenados con décadas de código anterior a C++11 emiten sin problema un new en una función y un delete en otra. Tu trabajo en el review no es rastrear cada camino entre ambos: es rechazar el patrón de plano.

Por qué "ownership" es la palabra clave

Un puntero crudo en sí no es el problema. Las C++ Core Guidelines son explícitas: R.3 — un puntero crudo (un T*) no es dueño. El puntero que observa un objeto que otro posee es idiomático y de costo cero. La clase de bugs empieza en el momento en que un puntero crudo además es responsable de llamar a delete:

Por eso la guía R.11 dice: evita llamar a new y delete explícitamente en código de aplicación.

La tabla de reemplazos

EscribisteEscribe en su lugarPor qué
T* p = new T(...) + delete pauto p = std::make_unique<T>(...)Ownership exclusivo, liberado en cada ruta de salida (R.20)
"Dos lugares lo necesitan vivo"std::shared_ptr<T> — solo para vida realmente compartidaEl conteo de referencias cuesta; R.21 dice preferir unique_ptr
Parámetros de puntero + longitudstd::span<T> (C++20)Una vista no propietaria con límites (F.24 / I.13)
Solo mirar, nunca liberarT*, T& o const T&No propietario por convención (R.3, F.7)
Destructor/copy/move escritos a manoRegla de cero — deja que los miembros se gestionen solosSi cada miembro es RAII, no escribes ninguna de las cinco (C.20)

El procedimiento de decisión cabe en una frase: unique por defecto, shared solo cuando la vida es genuinamente compartida, vistas para todo lo demás.

Trucos power-user: aplicarlo a los agentes

La recompensa es el cierre del reel: el ownership se vuelve explícito y toda una clase de bugs deja de ser expresable. Cuando tu agente emita un puntero crudo con ownership — bloquéalo.

Recursos

¿Construyes una funcionalidad con IA? Yeda AI diseña, audita y entrega sistemas LLM de producción.

Habla con nosotros · Lee el blog · Read in English