Compartir vía


Advertencia C26406

No asigne un puntero sin formato a owner<T> (r.3)

Esta advertencia aplica R.3 desde C++ Core Guidelines. Para más información, consulte C++ Core Guidelines R.3.

Comentarios

Los propietarios se inicializan a partir de asignaciones o de otros propietarios. Esta advertencia se produce cuando se asigna un valor de un puntero sin formato a un puntero de propietario. Los punteros sin formato no garantizan la transferencia de propiedad; El propietario original todavía puede contener el recurso e intentar liberarlo. Es correcto asignar un valor de un propietario a un puntero sin procesar. Los punteros sin procesar son clientes válidos para acceder a los recursos, pero no para administrarlos.

Nombre del análisis de código: DONT_ASSIGN_RAW_TO_OWNER

Ejemplo

Uso de la dirección del objeto :

En este ejemplo se intenta asignar la propiedad de la dirección de defaultSocket al puntero del propietario socket:

gsl::owner<Socket*> socket = defaultSocket ? &defaultSocket : new Socket(); // C26406