Avviso C26404
Non eliminare uno
owner<T>
stato che potrebbe non essere valido (r.3)
Osservazioni:
Quando un puntatore proprietario rilascia o trasferisce la risorsa, diventa in uno stato "non valido". L'eliminazione di un puntatore di questo tipo può causare un danneggiamento immediato della memoria a causa di un'eliminazione doppia o di una violazione di accesso quando si accede alla risorsa eliminata da un altro puntatore proprietario.
Nome dell'analisi del codice: DONT_DELETE_INVALID
Esempio 1
Eliminazione di un proprietario dopo il trasferimento del relativo valore:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Esempio 2
Eliminazione di un proprietario non inizializzato:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404