Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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