C28183C28183

avertissement C28183 : l’argument peut être une valeur, et est une copie de la valeur trouvée dans le pointeurwarning C28183: The argument could be one value, and is a copy of the value found in the pointer

Cet avertissement indique que cette valeur est inattendue dans le contexte actuel.This warning indicates that this value is unexpected in the current context. Cet avertissement apparaît lorsqu’un NULL valeur est passée en tant qu’argument à une fonction qui ne le permettent pas.This warning usually appears when a NULL value is passed as an argument to a function that does not permit it. La valeur a été trouvée dans la variable spécifiée et que l’argument est une copie de cette variable.The value was actually found in the specified variable, and the argument is a copy of that variable.

L’outil d’analyse du Code émet cet avertissement au premier point où il peut définitivement déterminer seul que le pointeur est NULL ou qu’il contient une valeur non conforme.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. Toutefois, il est souvent le cas où l’erreur peut se produire en fait plus haut dans la trace.However, it is often the case that the error could actually occur earlier in the trace. Dans ce cas, l’outil d’analyse du Code donnera également le numéro de ligne de la première instance possible--généralement à un emplacement où il ne pourrait pas définitivement déterminer que l’avertissement n’était pas approprié.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. Dans ce cas, l’emplacement précédent où cela peut se produire est ajouté au message d’avertissement.In those cases, the earlier location where this can occur is appended to the warning message. En règle générale, une modification du code doit se produire à ou avant ce numéro de ligne, plutôt qu’au point de rapport.Typically, a code change should occur at or before that line number, rather than at the point of report.

ExempleExample

Dans l’exemple suivant, l’outil d’analyse du Code qui détermine s a la valeur NULL dans le if instruction et le corps de la if est effectuée.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. Le pointeur s est ensuite assigné à t , puis t est utilisé d’une manière où un NULL déréférencer peut se produire.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);
}

Pour cet exemple de code, l’outil d’analyse du Code signale l’avertissement suivant :For this code example, the Code Analysis tool reports the following warning:

d:\sample\testfile.cpp(38) : avertissement C28183 : ' t 'peut être ' 0', et est une copie de la valeur trouvée dans les ' : Ceci n’est pas conforme à la spécification de la fonction 'lstrlenA'. : lignes : 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