Partager via


C28183

avertissement C28183 : L'argument pouvait être une valeur et il est une copie de la valeur trouvée dans le pointeur

Cet avertissement indique que cette valeur est inattendue dans le contexte actuel.Cet avertissement apparaît généralement lorsqu'une valeur NULL est passée comme argument à une fonction qui ne l'autorise pas.La valeur a en fait été trouvée dans la variable spécifiée, et l'argument est une copie de cette variable.

L'outil d'analyse du code inscrit cet avertissement au premier point où il peut déterminer définitivement que le pointeur est NULL ou qu'il contient une valeur non conforme.Toutefois, il est souvent le cas où l'erreur peut en fait se produire précédemment dans la trace.Lorsque cela se produit, l'outil d'analyse du code donnera aussi le numéro de la ligne de la première instance possible -- généralement à un emplacement où il ne peut pas déterminer définitivement que l'avertissement est approprié.Dans ces cas, l'emplacement précédent où cela peut se produire est ajouté au message d'avertissement.En général, une modification du code doit se produire au moment ou avant ce numéro de ligne, plutôt qu'au point de l'état.

Exemple

Dans l'exemple suivant, l'outil d'analyse du code détermine que s est NULL dans l'instruction if , et le corps if est pris.Le pointeur s est ensuite assigné à t puis t est utilisé de façon où un déréférencement NULL peut se produire.

#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 enregistre l'avertissement suivant :