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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour