Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Do not delete an
owner<T>which may be in invalid state (r.3)
Remarks
Once an owner pointer releases or transfers its resource, it gets into an "invalid" state. Deleting such a pointer may lead to immediate memory corruption due to double delete, or to an access violation when the deleted resource is accessed from another owner pointer.
Code analysis name: DONT_DELETE_INVALID
Example 1
Deleting an owner after transferring its value:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Example 2
Deleting an uninitialized owner:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404