Condividi tramite


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;