Compartir a través de


C28183

Advertencia C28183: El argumento no puede ser un valor, y es una copia del valor encontrado en el puntero

Esta advertencia indica que este valor es inesperado en el contexto actual.Esta advertencia se produce normalmente cuando un valor NULL se pasa como argumento a una función que no lo permite.El valor se encuentra realmente en la variable especificada y el argumento es una copia de esa variable.

La herramienta de análisis de código señala esta advertencia en el primer punto donde puede determinar definitivamente que el puntero es NULL o que contiene un valor no válido.Sin embargo, a menudo se da el caso de que el error podría producirse anteriormente en el seguimiento.Cuando esto sucede, la herramienta de análisis de código también dar el número de la primera aparición posible -- normalmente en una ubicación donde no se pudo determinar definitivamente que la advertencia fuera adecuada.En esos casos, la ubicación anterior en donde esto puede aparecer está anexa al mensaje de advertencia.Normalmente, un cambio de código debe aparecer en ese número de línea, o antes de él, en lugar del punto del informe.

Ejemplo

En el ejemplo siguiente, la herramienta de análisis de código determina que s es NULL en la instrucción de if , y el cuerpo de if se toma.El puntero s se asigna a t y después t se utiliza de forma donde NULL desreferenciación podría aparecer.

#include <windows.h>

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

    t = s;

    return lstrlenA(t);
}

Para este ejemplo de código, la herramienta de análisis de código designa la advertencia siguiente: