Поделиться через


Предупреждение C26406

Не назначайте необработанный указатель на owner<T> объект (r.3)

Это предупреждение применяет R.3 из основных рекомендаций C++. Дополнительные сведения см. в руководстве по C++ Core R.3.

Замечания

Владельцы инициализированы из выделения или от других владельцев. Это предупреждение возникает при назначении значения из необработанного указателя на указатель владельца. Необработанные указатели не гарантируют передачу прав владения; Исходный владелец по-прежнему может хранить ресурс и пытаться освободить его. Нормально назначить значение от владельца необработанным указателем. Необработанные указатели являются допустимыми клиентами для доступа к ресурсам, но не для управления ими.

Имя анализа кода: DONT_ASSIGN_RAW_TO_OWNER

Пример

Использование адреса объекта:

Этот пример пытается назначить владение адресом defaultSocket указателя владельца socket:

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