Udostępnij za pośrednictwem


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 socketwłaściciela:

gsl::owner<Socket*> socket = defaultSocket ? &defaultSocket : new Socket(); // C26406