C26404 DONT_DELETE_INVALID
Once 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.
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
الملاحظات
إرسال الملاحظات وعرضها المتعلقة بـ