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