Aviso C26404
Não exclua um
owner<T>
que possa estar em estado inválido (r.3)
Comentários
Depois que um ponteiro proprietário libera ou transfere seu recurso, ele fica em um estado "inválido". A exclusão desse ponteiro pode levar à corrupção de memória imediata devido à exclusão dupla ou a uma violação de acesso quando o recurso excluído é acessado de outro ponteiro do proprietário.
Nome da análise de código: DONT_DELETE_INVALID
Exemplo 1
Excluindo um proprietário após transferir seu valor:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Exemplo 2
Excluindo um proprietário não inicializado:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários