Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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