Ostrzeżenie C26404
Nie usuwaj elementu
owner<T>
, który może być w nieprawidłowym stanie (r.3)
Uwagi
Po wydaniu lub przeniesieniu zasobu przez wskaźnik właściciela staje się w stanie "nieprawidłowy". Usunięcie takiego wskaźnika może prowadzić do natychmiastowego uszkodzenia pamięci z powodu podwójnego usunięcia lub naruszenia dostępu w przypadku uzyskania dostępu do usuniętego zasobu z innego wskaźnika właściciela.
Nazwa analizy kodu: DONT_DELETE_INVALID
Przykład 1
Usunięcie właściciela po przeniesieniu jego wartości:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Przykład 2
Usuwanie niezainicjowanego właściciela:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla