C28183C28183

Advertencia C28183: el argumento puede ser un valor y es una copia del valor que se encuentra en el punterowarning C28183: The argument could be one value, and is a copy of the value found in the pointer

Esta advertencia indica que este valor es inesperado en el contexto actual.This warning indicates that this value is unexpected in the current context. Esta advertencia suele aparece cuando un NULL valor se pasa como argumento a una función que no lo permiten.This warning usually appears when a NULL value is passed as an argument to a function that does not permit it. El valor se encuentra realmente en la variable especificada y el argumento es una copia de esa variable.The value was actually found in the specified variable, and the argument is a copy of that variable.

La herramienta de análisis de código emite esta advertencia en el primer punto donde puede determinar definitivamente que el puntero es NULL o que contiene un valor no válido.The Code Analysis tool reports this warning at the first point where it can definitively determine that the pointer is NULL or that it contains an illegal value. Sin embargo, a menudo es el caso de que realmente puede producirse el error anterior en el seguimiento.However, it is often the case that the error could actually occur earlier in the trace. Cuando esto sucede, la herramienta de análisis de código también le proporcionará el número de línea de la primera instancia posibles--normalmente en una ubicación donde no pudo definitivamente determinar que la advertencia es apropiada.When this happens, the Code Analysis tool will also give the line number of the first possible instance -- usually at a location where it could not definitively determine that the warning was appropriate. En esos casos, la ubicación anterior que esto puede ocurrir se anexa al mensaje de advertencia.In those cases, the earlier location where this can occur is appended to the warning message. Normalmente, se debe realizar un cambio en el código en o antes de ese número de línea, en lugar de en el momento de informe.Typically, a code change should occur at or before that line number, rather than at the point of report.

EjemploExample

En el ejemplo siguiente, la herramienta de análisis de código determina que s es NULL en la if instrucción y el cuerpo de la if se realiza.In the following example, the Code Analysis tool determines that s is NULL in the if statement, and the body of the if is taken. El puntero s , a continuación, se asigna a t y, a continuación, t se utiliza en un modo donde un NULL desreferenciación podría producirse.The pointer s is then assigned to t and then t is used in a way where a NULL dereference could occur.

#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 informa de la advertencia siguiente:For this code example, the Code Analysis tool reports the following warning:

d:\sample\testfile.cpp(38): advertencia C28183: ' t 'puede ser ' 0', y es una copia del valor que se encuentra en ': esto no se adhiere a la especificación de la función 'lstrlenA'.: líneas: 31, 32, 36, 38d:\sample\testfile.cpp(38) : warning C28183: 't' could be '0', and is a copy of the value found in 's': this does not adhere to the specification for the function 'lstrlenA'.: Lines: 31, 32, 36, 38