Upozornění C26404
Neodstraňovat, která může být v neplatném
owner<T>
stavu (r.3)
Poznámky
Jakmile ukazatel vlastníka uvolní nebo přenese svůj prostředek, přejde do neplatného stavu. Odstranění takového ukazatele může vést k okamžitému poškození paměti z důvodu dvojitého odstranění nebo porušení přístupu při přístupu odstraněného prostředku z jiného ukazatele vlastníka.
Název analýzy kódu: DONT_DELETE_INVALID
Příklad 1
Odstranění vlastníka po převodu jeho hodnoty:
gsl::owner<State*> validState = nullptr;
gsl::owner<State*> state = ReadState();
validState = state;
if (!IsValid(state))
delete state; // C26404
Příklad 2
Odstranění neinicializovaného vlastníka:
gsl::owner<Message*> message;
if (popLast)
message = ReleaseMessage();
delete message; // C26404