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.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de