Warnung C26406
Weisen Sie einem (r.3) keinen unformatierten Zeiger zu
owner<T>
.
Diese Warnung erzwingt R.3 aus den C++-Kernrichtlinien. Weitere Informationen finden Sie unter C++ Core Guidelines R.3.
Hinweise
Besitzer werden von Zuordnungen oder von anderen Besitzern initialisiert. Diese Warnung tritt auf, wenn Sie einem Besitzerzeiger einen Wert von einem unformatierten Zeiger zuweisen. Unformatierte Zeiger garantieren keine Eigentumsübertragung; Der ursprüngliche Besitzer kann die Ressource weiterhin enthalten und versuchen, sie freizugeben. Es ist in Ordnung, einen Wert von einem Besitzer einem unformatierten Zeiger zuzuweisen. Unformatierte Zeiger sind gültige Clients für den Zugriff auf Ressourcen, aber nicht für die Verwaltung.
Codeanalysename: DONT_ASSIGN_RAW_TO_OWNER
Beispiel
Verwenden der Objektadresse:
In diesem Beispiel wird versucht, den Besitz der Adresse des defaultSocket
Besitzerzeigers socket
zuzuweisen:
gsl::owner<Socket*> socket = defaultSocket ? &defaultSocket : new Socket(); // C26406