C28183
C28183 de aviso: O argumento pode ser um valor, e é uma cópia do valor encontrado no ponteiro
Este aviso indica que esse valor é inesperado no contexto atual.Esse erro geralmente aparece quando um valor de NULL é passada como um argumento para uma função que o não permite.O valor foi encontrado realmente na variável especificado, e o argumento é uma cópia da variável.
A ferramenta de análise de código relata este aviso no primeiro ponto onde definitivamente pode determinar que o ponteiro é NULL ou que contém um valor inválido.No entanto, geralmente é o caso do erro pode ocorrer realmente anteriormente no rastreamento.Quando isso acontece, a ferramenta de análise de código também irá fornecer o número da linha da primeira instância possível -- geralmente em um local onde definitivamente não pode determinar que o aviso for apropriado.Nesses casos, o local anterior em que isso pode ocorrer é acrescentada a mensagem de aviso.Normalmente, uma alteração de código deve ocorrer nessa linha antes ou número, em vez de no ponto de relatório.
Exemplo
No exemplo, a ferramenta de análise de código determina que s é NULO na declaração de if , e o corpo de if é executada.O ponteiro s é atribuído à t e t é usado em uma maneira onde 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 relata o seguinte aviso: