Freigeben über


Warnung C28183

Das Argument könnte ein Wert sein und ist eine Kopie des im Zeiger enthaltenen Werts.

Diese Warnung gibt an, dass dieser Wert im aktuellen Kontext unerwartet ist. Diese Warnung wird in der Regel angezeigt, wenn ein NULL Wert als Argument an eine Funktion übergeben wird, die ihn nicht zulässt. Der Wert wurde tatsächlich in der angegebenen Variablen gefunden, und das Argument ist eine Kopie dieser Variablen.

Das Codeanalysetool meldet diese Warnung an dem ersten Punkt, an dem er definitiv bestimmen kann, ob der Zeiger ist NULL oder dass er einen unzulässigen Wert enthält. Es ist jedoch häufig der Fall, dass der Fehler tatsächlich früher in der Ablaufverfolgung auftreten könnte. In diesem Fall gibt das Codeanalysetool auch die Zeilennummer der ersten möglichen Instanz an einem Ort an, an dem die Warnung nicht endgültig bestimmt werden konnte. In diesen Fällen wird der frühere Speicherort, an dem er auftreten kann, an die Warnmeldung angefügt. In der Regel sollte anstelle des Berichtspunkts eine Codeänderung bei oder vor dieser Zeilennummer erfolgen.

Beispiel

Im folgenden Beispiel bestimmt das Codeanalysetool, dass "s " in der if Anweisung NULL ist, und der Textkörper der if Datei wird übernommen. Der Zeiger s wird dann t zugewiesen und dann nicht in einer Weise verwendet, in der eine NULL Ableitung auftreten kann.

#include <windows.h>

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

    t = s;

    return lstrlenA(t);
}

In diesem Codebeispiel meldet das Codeanalysetool die folgende Warnung:

d:\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