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: