Partilhar via


Aviso C26406

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

Este aviso impõe o R.3 das Diretrizes Básicas do C++. Para obter mais informações, consulte C++ Core Guidelines R.3.

Observações

Os proprietários são inicializados a partir de alocações ou de outros proprietários. Este aviso surge quando tu atribuis um valor de um "raw pointer" a um "owner pointer". Os ponteiros brutos não garantem a 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 crus são clientes válidos para aceder a recursos, mas não para os gerir.

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 defaultSocket ao ponteiro proprietário socket.

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