Megosztás:


Figyelmeztetés C26405

Ne rendeljen owner<T> érvényes állapotúhoz (r.3)

Megjegyzések

Ha egy tulajdonosmutató már egy érvényes memóriapufferre mutat, akkor az nem rendelhető hozzá egy másik értékhez anélkül, hogy az aktuális erőforrást először fel kellene szabad adni. Az ilyen hozzárendelés akkor is erőforrásszivárgáshoz vezethet, ha az erőforráscímet egy nyers mutatóba másolja (mert a nyers mutatók nem szabadítanák fel az erőforrásokat). További információkért tekintse meg a C++ alapvető irányelveit.

Kódelemzés neve: DONT_ASSIGN_TO_VALID.

1. példa

Tulajdonos felülírása egy ciklusban:

gsl::owner<Shape*> shape = nullptr;
while (shape = NextShape()) // C26405
    Process(shape) ? delete shape : 0;