Ostrzeżenie C26406
Nie przypisuj nieprzetworzonego wskaźnika do (
owner<T>
r.3)
To ostrzeżenie wymusza język R.3 z podstawowych wytycznych dotyczących języka C++. Aby uzyskać więcej informacji, zobacz C++ Core Guidelines R.3 (Wytyczne podstawowe języka C++R.3).
Uwagi
Właściciele są inicjowani z alokacji lub od innych właścicieli. To ostrzeżenie występuje podczas przypisywania wartości z nieprzetworzonego wskaźnika do wskaźnika właściciela. Nieprzetworzone wskaźniki nie gwarantują przeniesienia własności; oryginalny właściciel może nadal przechowywać zasób i próbować go zwolnić. W porządku jest przypisanie wartości od właściciela do surowego wskaźnika. Pierwotne wskaźniki są prawidłowymi klientami dostępu do zasobów, ale nie do zarządzania nimi.
Nazwa analizy kodu: DONT_ASSIGN_RAW_TO_OWNER
Przykład
Przy użyciu adresu obiektu:
W tym przykładzie podjęto próbę przypisania własności adresu defaultSocket
do wskaźnika socket
właściciela:
gsl::owner<Socket*> socket = defaultSocket ? &defaultSocket : new Socket(); // C26406
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla