Compartir vía


Advertencia C26405

No asigne a un owner<T> que pueda estar en estado válido (r.3)

Comentarios

Si un puntero propietario ya apunta a un búfer de memoria válido, no debe asignarse a otro valor sin liberar primero su recurso actual. Esta asignación puede provocar una pérdida de recursos incluso si la dirección del recurso se copia en algún puntero sin procesar (ya que los punteros sin procesar no deben liberar recursos). Para más información, consulte C++ Core Guidelines.

Nombre del análisis de código: DONT_ASSIGN_TO_VALID

Ejemplo 1

Sobrescribir un propietario en un bucle:

gsl::owner<Shape*> shape = nullptr;
while (shape = NextShape()) // C26405
    Process(shape) ? delete shape : 0;