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: