Sdílet prostřednictvím


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