Avertissement C26404
Ne supprimez pas un
owner<T>
état non valide (r.3)
Notes
Une fois qu’un pointeur propriétaire libère ou transfère sa ressource, il est dans un état « non valide ». La suppression d’un tel pointeur peut entraîner une altération immédiate de la mémoire en raison d’une double suppression ou d’une violation d’accès lorsque la ressource supprimée est accessible à partir d’un autre pointeur propriétaire.
Nom de l’analyse du code : DONT_DELETE_INVALID
Exemple 1
Suppression d’un propriétaire après avoir transféré sa valeur :
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Exemple 2
Suppression d’un propriétaire non initialisé :
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404