Compartilhar via


Aviso C26406

Não atribuir um ponteiro bruto a um owner<T> (r.3)

Esse aviso impõe o R.3 das Diretrizes Principais do C++. Para obter mais informações, confira Diretrizes Principais do C++ R.3.

Comentários

Os proprietários são inicializados de alocações ou de outros proprietários. Esse aviso ocorre quando você atribui um valor de um ponteiro bruto a um ponteiro do proprietário. Ponteiros brutos não garantem transferência de propriedade; O proprietário original ainda pode manter o recurso e tentar liberá-lo. Não há problema em atribuir um valor de um proprietário a um ponteiro bruto. Ponteiros brutos são clientes válidos para acessar recursos, mas não para gerenciá-los.

Nome da análise de código: DONT_ASSIGN_RAW_TO_OWNER

Exemplo

Usando o endereço do objeto:

Este exemplo tenta atribuir a propriedade do endereço do defaultSocketpara o ponteiro de proprietário socket:

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