Предупреждение 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