Avviso C26405
Non assegnare a un oggetto
owner<T>
che può essere in uno stato valido (r.3)
Osservazioni:
Se un puntatore proprietario punta già a un buffer di memoria valido, non deve essere assegnato a un altro valore senza rilasciare prima la risorsa corrente. Tale assegnazione può causare una perdita di risorse anche se l'indirizzo della risorsa viene copiato in un puntatore non elaborato (perché i puntatori non elaborati non devono rilasciare risorse). Per altre informazioni, vedere Linee guida di base di C++.
Nome dell'analisi del codice: DONT_ASSIGN_TO_VALID
Esempio 1
Sovrascrivere un proprietario in un ciclo:
gsl::owner<Shape*> shape = nullptr;
while (shape = NextShape()) // C26405
Process(shape) ? delete shape : 0;