Upozornění C26405
Nepřiřazujte k tomu
owner<T>
, který může být v platném stavu (r.3).
Poznámky
Pokud ukazatel vlastníka již odkazuje na platnou vyrovnávací paměť, nesmí být přiřazen k jiné hodnotě bez uvolnění aktuálního prostředku nejprve. Takové přiřazení může vést k úniku prostředků i v případě, že se adresa prostředku zkopíruje do nějakého nezpracovaného ukazatele (protože nezpracované ukazatele by neměly uvolnit prostředky). Další informace najdete v pokynech pro C++ Core Guidelines.
Název analýzy kódu: DONT_ASSIGN_TO_VALID
Příklad 1
Přepsání vlastníka ve smyčce:
gsl::owner<Shape*> shape = nullptr;
while (shape = NextShape()) // C26405
Process(shape) ? delete shape : 0;