Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Potenziell leere optionale 'Variable' wird entwrappt.
Hinweise
Das Aufheben der Entwrastung leerer std::optional Werte ist nicht definiertes Verhalten. Ein solcher Vorgang gilt als Sicherheitsrisiko, da er zu einem Absturz, zum Lesen nicht initialisierter Arbeitsspeicher oder zu einem anderen unerwarteten Verhalten führen kann. Bei dieser Überprüfung wird versucht, Fälle zu finden, in denen eine std::optional Leerheit nicht überprüft wird, bevor Vorgänge entpackt werden. Sie können C26829 nur für eine eingeschränktere Analyse aktivieren.
Beispiel
std::optional<int> getOptional();
void f(std::optional<int> maybeEmpty)
{
if (maybeEmpty)
*maybeEmpty = 42; // No warning
*maybeEmpty = 5; // warning: C26830
std::optional<int> o = getOptional();
*o = 42; // warning: C26830
}
Um dieses Problem zu lösen, stellen Sie sicher, dass der Code niemals ein leeres optionales Auslöser entpackt. Verwenden Sie alternativ die value Methode, und stellen Sie sicher, dass Sie die std::bad_optional_access Ausnahme behandeln.