Compartilhar via


C28183

aviso C28183: O argumento pode ser um valor, e é uma cópia do valor encontrado no ponteiro

Esse aviso indicar que esse valor for inesperado no contexto atual.Esse aviso normalmente aparece quando um valor de NULL é passado como um argumento para uma função que não permite o.O valor foi encontrado realmente na variável especificada, e o argumento é uma cópia dessa variável.

A ferramenta de análise de código relata esse aviso no primeiro ponto em que pode determinar definitivamente se o ponteiro é NULL ou que contém um valor ilegal.No entanto, é geralmente o caso em que o erro pode ocorrer realmente anteriormente no rastreamento.Quando isso acontece, a ferramenta de análise de código também fornecerá o número da linha da primeira instância possível -- normalmente em um local onde não pode determinar definitivamente se o aviso era apropriada.Em casos, o local anterior em que isso aconteça é anexado à mensagem de aviso.Normalmente, uma alteração de código deve ocorrer em ou antes de aquela linha número, não no ponto de relatório.

Exemplo

No exemplo a seguir, a ferramenta de análise de código que determina s é NULL na instrução de if , e o corpo de if é obtido.O ponteiro s é então atribuído a t e t é usado em uma forma em que NULL desreferencie pode ocorrer.

#include <windows.h>

int fun2(char *s)
{
    char *t;
    if (s == NULL) {
       //... but s is unchanged 
    }

    t = s;

    return lstrlenA(t);
}

Para este exemplo de código, a ferramenta de análise de código informa o seguinte aviso: