警告 C26404

请勿删除可能处于无效状态的 owner<T> (r.3)

备注

所有者指针释放或转移其资源后,它将进入“无效”状态。 删除此类指针可能会因双重删除而导致内存立即损坏,或在其他所有者指针访问已删除资源时出现访问冲突。

代码分析名称:DONT_DELETE_INVALID

示例 1

在转移所有者值后删除所有者:

gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
    delete state;   // C26404

示例 2

删除未初始化的所有者:

gsl::owner<Message*> message;
if (popLast)
    message = ReleaseMessage();
delete message; // C26404