Warnung C26404
Löschen Sie
owner<T>
keinen ungültigen Zustand (r.3)
Hinweise
Sobald ein Besitzerzeiger seine Ressource loslässt oder überträgt, wird er in einen "ungültigen" Zustand versetzt. Das Löschen eines solchen Zeigers kann zu einer sofortigen Speicherbeschädigung aufgrund eines doppelten Löschens oder zu einer Zugriffsverletzung führen, wenn von einem anderen Besitzerzeiger auf die gelöschte Ressource zugegriffen wird.
Codeanalysename: DONT_DELETE_INVALID
Beispiel 1
Löschen eines Besitzers nach dem Übertragen seines Werts:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Beispiel 2
Löschen eines nicht initialisierten Besitzers:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404