Codeanalyse für C/C++-Warnungen
Aktualisiert: November 2007
In diesem Abschnitt werden die C/C++-Codeanalysewarnungen im Bereich C6000 bis C6999 aufgeführt.
In diesem Abschnitt
Warnnummer |
Beschreibung |
---|---|
Warnung C6001: Nicht initialisierter Speicher <Variable> wird verwendet. |
|
Warnung C6011: NULL-Zeiger <Name> wird dereferenziert. |
|
Warnung C6029: Möglicher Pufferüberlauf im Aufruf von <Funktion>: Verwendung des ungeprüften Wertes |
|
Warnung C6031: Der Rückgabewert wird ignoriert: <Funktion> gibt ggf. unerwarteten Wert zurück. |
|
Warnung C6053: Durch den Aufruf von <Funktion> wird die Zeichenfolge <Variable> möglicherweise nicht mit 0 (null) beendet. |
|
Warnung C6054: Die Zeichenfolge <Variable> darf nicht mit 0 (null) enden. |
|
Warnung C6057: Pufferüberlauf aufgrund einer nicht übereinstimmenden Anzahl von Zeichen/Bytes im Aufruf von <Funktion> |
|
Warnung C6059: Falscher Längenparameter im Aufruf von <Funktion>. Übergeben Sie die Anzahl der verbleibenden Zeichen, nicht die Puffergröße von <Variable>. |
|
Warnung C6063: Fehlendes Zeichenfolgenargument für <Funktion> entsprechend dem Konvertierungsspezifizierer <Nummer> |
|
Warnung C6064: Fehlendes Ganzzahlargument für <Funktion> entsprechend dem Konvertierungsspezifizierer <Nummer> |
|
Warnung C6066: Ein Nichtzeiger wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch ein Zeiger erforderlich. |
|
Warnung C6067: Der <Nummer>-Parameter im Aufruf von <Funktion> muss die Adresse der Zeichenfolge sein. |
|
Warnung C6200: Der Index <Name> liegt für den Nichtstapelpuffer <Variable> außerhalb des gültigen Indexbereichs von <Minimum> bis <Maximum>. |
|
Warnung C6201: Pufferüberlauf für <Variable> (möglicherweise stapelzugeordnet): Der Index <Name> liegt außerhalb des gültigen Indexbereichs von <Minimum> bis <Maximum>. |
|
Warnung C6202: Pufferüberlauf für <Variable> (möglicherweise stapelzugeordnet) im Aufruf von <Funktion>: Die Länge <Größe> überschreitet die Puffergröße von <Maximum>. |
|
Warnung C6203: Pufferüberlauf für Puffer <Variable> im Aufruf von <Funktion>: Die Länge <Größe> überschreitet die Puffergröße. |
|
Warnung C6204: Möglicher Pufferüberlauf im Aufruf von <Funktion>: Verwendung des ungeprüften Parameters <Variable>. |
|
Warnung C6209: Verwendung von 'sizeof<Variable1>' als <Nummer>-Parameter im Aufruf von <Funktion>, wobei <Variable2> ein Array von Breitzeichen sein kann. Wollten Sie die Zeichenanzahl anstelle der Byteanzahl verwenden? |
|
Warnung C6211: Speicherverlust <Zeiger> infolge einer Ausnahme. Verwenden Sie einen lokalen Catch-Block, um den Arbeitsspeicher zu bereinigen. |
|
Warnung C6214: Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT in Boolean |
|
Warnung C6215: Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: Boolean in HRESULT |
|
Warnung C6216: Vom Compiler eingefügte Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: Boolean in HRESULT |
|
Warnung C6217: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit 'not' getestet. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED. |
|
Warnung C6219: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit 1 oder TRUE verglichen. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED. |
|
Warnung C6220: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit -1 verglichen. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED. |
|
Warnung C6221: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit einer ganzen Zahl verglichen. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED. |
|
Warnung C6225: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird 1 oder TRUE zugewiesen. Verwenden Sie stattdessen S_FALSE. |
|
Warnung C6226: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird -1 zugewiesen. Verwenden Sie stattdessen E_FAIL. |
|
Warnung C6230: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird in einem Boolean-Kontext verwendet. |
|
Warnung C6235: (<Konstante ungleich 0> || <Ausdruck>) ist immer eine Konstante ungleich 0. |
|
Warnung C6236: (<Ausdruck> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0. |
|
Warnung C6237: (<Null> && <Ausdruck>) ist immer 0 (null). <Ausdruck> wird niemals ausgewertet und hat möglicherweise Nebeneffekte. |
|
Warnung C6239: (<Konstante ungleich 0> && <Ausdruck>) wird immer zum Ergebnis von <Ausdruck> ausgewertet. Wollten Sie den bitweisen AND-Operator verwenden? |
|
Warnung C6240: (<Ausdruck> && <Konstante ungleich 0>) wird immer zum Ergebnis von <Ausdruck> ausgewertet. Wollten Sie den bitweisen AND-Operator verwenden? |
|
Warnung C6242: Ein Aussprung aus diesem Try-Block erzwingt eine lokale Entladung und hat schwere Leistungseinbußen zur Folge. |
|
Warnung C6244: Die lokale Deklaration von <Variable> blendet die frühere Deklaration in Zeile <Zeile> von <Datei> aus. |
|
Warnung C6246: Die lokale Deklaration von <Variable> blendet die Deklaration des gleichen Namens im äußeren Bereich aus. Weitere Informationen finden Sie in der früheren Deklaration unter <Speicherort>. |
|
Warnung C6248: Das Festlegen von DACL für einen SECURITY_DESCRIPTOR auf NULL hat ein ungeschütztes Objekt zur Folge. |
|
Warnung C6250: Durch den Aufruf von <Funktion> ohne das MEM_RELEASE-Flag wird zwar Arbeitsspeicher freigegeben, aber keine Adressdeskriptoren (VADs). Dies hat Adressraumverluste zur Folge. |
|
Warnung C6255: _alloca kennzeichnet Fehler durch Auslösen einer Stapelüberlaufausnahme. Verwenden Sie stattdessen _alloca_s. |
|
Warnung C6258: Die Verwendung von TerminateThread lässt keine ordnungsgemäße Threadbereinigung zu. |
|
Warnung C6259: Der bezeichnete Code ist nicht erreichbar: (<Ausdruck> & < Konstante >) in einem switch-Ausdruck kann nicht zu <case-Bezeichnung> ausgewertet werden. |
|
Warnung C6260: sizeof * sizeof ist nahezu immer falsch. Wollten Sie eine Zeichenanzahl oder eine Byteanzahl verwenden? |
|
Warnung C6262: Die Funktion verwendet <Konstante> Bytes vom Stapel und überschreitet /analyze:stacksize<Konstante>. Verschieben Sie einige Daten auf den Heap. |
|
Warnung C6263: Verwendung von _alloca in einer Schleife: Dies kann schnell zu einem Stapelüberlauf führen. |
|
Warnung C6268: Falsche Operationsreihenfolge: (<TYP1>)(<TYP2>)x + y. Möglicherweise fehlen Klammern: (<TYP1>)((<TYP2>)x + y) |
|
Warnung C6269: Möglicherweise falsche Operationsreihenfolge: Dereferenzierung wird ignoriert. |
|
Warnung C6270: Fehlendes Gleitkommaargument für <Funktion>: Fügen Sie ein Gleitkommaargument entsprechend dem Konvertierungsspezifizierer <Nummer> hinzu. |
|
Warnung C6271: Ein zusätzliches Argument wurde an <Funktion> übergeben: Der <Nummer>-Parameter wird von der Formatzeichenfolge nicht verwendet. |
|
Warnung C6272: Ein Nichtgleitkommaargument wurde als Argument <Nummer> übergeben. Im Aufruf von <Funktion> ist jedoch ein Gleitkommaargument erforderlich. |
|
Warnung 6273: Eine Nichtganzzahl wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch eine ganze Zahl erforderlich. Wenn ein Zeigerwert übergeben wird, sollte %p verwendet werden. |
|
Warnung C6274: Ein Nichtzeiger wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch ein Zeichen erforderlich. |
|
Warnung C6276: Umwandlung zwischen semantisch unterschiedlichen Zeichenfolgentypen: char * in wchar_t *. Die Verwendung einer ungültigen Zeichenfolge kann undefiniertes Verhalten zur Folge haben. |
|
Warnung C6277: Anwendungsname NULL und Pfad ohne Anführungszeichen im Aufruf von <Funktion>: Dies hat eine Sicherheitsanfälligkeit zur Folge, falls der Pfad Leerzeichen enthält. |
|
Warnung C6278: <Variable> wird mit dem new []-Arrayoperator zugeordnet, aber mit dem delete-Skalaroperator gelöscht. Destruktoren werden nicht aufgerufen. |
|
Warnung C6279: <Variable> wird mit dem new-Skalaroperator zugeordnet, aber mit dem delete []-Arrayoperator gelöscht. |
|
Warnung C6280: <Variable> wird mit <Funktion> zugeordnet, aber mit <Funktion> gelöscht. |
|
Warnung 6281: Falsche Operationsreihenfolge: Relationale Operatoren haben Vorrang vor bitweisen Operatoren. |
|
Warnung C6282: Falscher Operator: Zuweisung einer Konstanten im Boolean-Kontext. Verwenden Sie stattdessen '=='. |
|
Warnung C6283: <Variable> wird mit dem new []-Arrayoperator zugeordnet, aber mit dem delete-Skalaroperator gelöscht. |
|
Warnung C6284: Ein Objekt wurde als '% d'-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch eine Zeichenfolge erforderlich. |
|
Warnung C6285: (<Konstante ungleich 0> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0. Wollten Sie den bitweisen AND-Operator verwenden? |
|
Warnung C6286: (<Konstante ungleich 0> || <Ausdruck>) ist immer eine Konstante ungleich 0. <Ausdruck> wird niemals ausgewertet und hat möglicherweise Nebeneffekte. |
|
Warnung C6287: Redundanter Code: Die Teilausdrücke links und rechts sind identisch. |
|
Warnung C6288: Falscher Operator: Der gegenseitige Einschluss über && ist immer 0 (null). Wollten Sie stattdessen || verwenden? |
|
Warnung C6289: Falscher Operator: Der gegenseitige Ausschluss über || ist immer eine Konstante ungleich 0. Wollten Sie stattdessen && verwenden? |
|
Warnung C6290: Bitweise Operation auf logischem Ergebnis: ! hat Vorrang vor &. Verwenden Sie stattdessen && oder (!(x & y)). |
|
Warnung C6291: Bitweise Operation auf logischem Ergebnis: ! hat Vorrang vor |. Verwenden Sie stattdessen || oder (!(x | y)). |
|
Warnung C6292: Falsch definierte For-Schleife: Vom Höchstwert wird nach oben gezählt. |
|
Warnung C6293: Falsch definierte For-Schleife: Vom Minimalwert wird nach unten gezählt. |
|
Warnung C6294: Falsch definierte For-Schleife: Die Ausgangsbedingung erfüllt den Test nicht. Der Schleifenkörper wird nicht ausgeführt. |
|
Warnung C6295: Falsch definierte For-Schleife: Die <Variable>-Werte liegen immer im Bereich von "min" bis "max". Die Schleife wird endlos ausgeführt. |
|
Warnung C6296: Falsch definierte For-Schleife: Der Schleifenkörper wird nur einmal ausgeführt. |
|
Warnung C6297: Arithmetischer Überlauf: Der 32-Bit-Wert wird verschoben und dann in einen 64-Bit-Wert umgewandelt. Die Ergebnisse entsprechen möglicherweise nicht dem erwarteten Wert. |
|
Warnung C6298: Verwendung einer schreibgeschützten <Zeiger>-Zeichenfolge als schreibbares Zeichenfolgenargument: Dieses wird einen Schreibversuch im statischen, schreibgeschützten Speicher vornehmen und unvorhersehbare Abstürze verursachen. |
|
Warnung C6299: Der explizite Vergleich eines Bitfelds mit einem Boolean-Typ führt zu unerwarteten Ergebnissen. |
|
Warnung C6299: Der explizite Vergleich eines Bitfelds mit einem Boolean-Typ führt zu unerwarteten Ergebnissen. |
|
Warnung C6303: Formatzeichenfolgen stimmen nicht überein: Eine Zeichenfolge mit Breitzeichen wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch eine Zeichenfolge erforderlich. |
|
Warnung C6305: Potenzieller Konflikt zwischen sizeof-Menge und countof-Menge. |
|
Warnung C6306: Falscher Aufruf von <Funktion>: Verwenden Sie <Funktion>, das va_list als Argument annimmt. |
|
Warnung C6308: 'realloc' gibt möglicherweise einen NULL-Zeiger zurück: Das Zuweisen eines NULL-Zeigers zu <Variable>, das als Argument an 'realloc' übergeben wird, führt zu einem Verlust im ursprünglichen Speicherblock. |
|
Warnung C6309: Das Argument <Nummer> ist NULL: Dies entspricht nicht der Funktionsspezifikation von <Funktion>. |
|
Warnung C6310: Eine unzulässige Konstante im Ausnahmefilter kann unerwartetes Verhalten verursachen. |
|
Warnung C6312: Mögliche Endlosschleife: Verwendung der EXCEPTION_CONTINUE_EXECUTION-Konstanten im Ausnahmefilterausdruck einer try-except-Anweisung. |
|
Warnung C6313: Falscher Operator: Ein Flag mit dem Wert 0 (null) kann nicht mit dem bitweisen AND-Operator getestet werden. Verwenden Sie einen Übereinstimmungstest, um eine Überprüfung auf Flags mit dem Wert 0 durchzuführen. |
|
Warnung C6314: Falsche Operationsreihenfolge: Der bitweise OR-Operator hat Vorrang vor dem bedingten Ausdrucksoperator. Verdeutlichen Sie Ihre Absicht mit Klammern. |
|
Warnung C6315: Falsche Operationsreihenfolge: Der bitweise AND-Operator hat Vorrang vor dem bitweisen OR-Operator. Verdeutlichen Sie Ihre Absicht mit Klammern. |
|
Warnung C6316: Falscher Operator: Der getestete Ausdruck ist konstant und ungleich 0 (null). Verwenden Sie den bitweisen AND-Operator, um zu ermitteln, ob Bits festgelegt sind. |
|
Warnung C6317: Falscher Operator: Der logische NOT-Operator (!) ist nicht mit dem Einerkomplement-Operator (~) auswechselbar. |
|
Warnung C6318: Falsch definiertes __try/__except: Verwendung der EXCEPTION_CONTINUE_SEARCH-Konstanten oder einer anderen Konstanten, die zu 0 (null) ausgewertet wird, im Ausnahmefilterausdruck. Der Code im Ausnahmehandlerblock wird nicht ausgeführt. |
|
Warnung C6319: Bei Verwendung des Komma-Operators in einem getesteten Ausdruck wird das linke Argument ignoriert, wenn es keine Nebeneffekte hat. |
|
Warnung C6320: Der Ausnahmefilterausdruck ist die EXCEPTION_EXECUTE_HANDLER-Konstante. Hierdurch werden möglicherweise Ausnahmen maskiert, für die keine Behandlung vorgesehen war. |
|
Warnung C6322: leerer _except-Block |
|
Warnung 6323: Verwendung eines arithmetischen Operators auf Boolean-Typ(en) |
|
Warnung C6324: Potenziell falsche Verwendung von <Funktion1>: Wollten Sie <Funktion2> verwenden? |
|
Warnung C6326: Potenzieller Vergleich einer Konstanten mit einer anderen Konstanten. |
|
Warnung C6327: Potenzieller Pufferüberlauf: SysAllocStringLen kopiert <Anzahl> Zeichen aus der Zeichenfolge <Variable>, ohne die zu kopierende Zeichenanzahl zu validieren. Dies kann einen Codeabsturz zur Folge haben. |
|
Warnung von C6328: <Typ> wurde als <Nummer>-Parameter übergeben. <Typ> ist jedoch im Aufruf von <Funktion> erforderlich. |
|
Warnung C6331: Ungültiger Parameter: Das Übergeben von MEM_RELEASE und MEM_DECOMMIT zusammen mit <Funktion> ist nicht zulässig. Dies führt zu einem Fehler bei diesem Aufruf. |
|
Warnung C6332: Ungültiger Parameter: Das Übergeben von 0 (null) als dwFreeType-Parameter an <Funktion> ist nicht zulässig. Dies führt zu einem Fehler bei diesem Aufruf. |
|
Warnung C6333: Ungültiger Parameter: Das Übergeben von MEM_RELEASE und einem dwSize-Parameter ungleich 0 an <Funktion> ist nicht zulässig. Dies führt zu einem Fehler bei diesem Aufruf. |
|
Warnung C6334: Der sizeof-Operator kann bei Anwendung auf einen Ausdruck mit einem Operator unerwartete Ergebnisse aufweisen. |
|
Warnung C6335: Verlust in Prozessinformationshandle <Handlename> |
|
Warnung C6336: Ein arithmetischer Operator hat Vorrang vor einem Frageoperator. Verdeutlichen Sie Ihre Absicht mit Klammern. |
|
Warnung C6381: Zum Herunterfahren der API <Funktion> ist ein gültiges dwReason oder lpMessage erforderlich. |
|
Warnung C6383: Pufferüberlauf aufgrund der Konvertierung einer Elementanzahl in eine Byteanzahl: Für den <Nummer>-Parameter im Aufruf von <Funktion> wird eine Elementanzahl erwartet. |
|
Warnung C6384: sizeof eines Zeigers wird durch einen anderen Wert dividiert |
|
Warnung C6385: Ungültige Daten: Zugriff auf <Puffername>, die lesbare Größe beträgt <Größe1> Bytes, aber <Größe2> Bytes dürfen gelesen werden: Zeilen: x, y |
|
Warnung C6386: Pufferüberlauf: Zugriff auf <Puffername>, die schreibbare Größe beträgt <Größe1> Bytes, aber <Größe2> Bytes dürfen geschrieben werden: Zeilen: x, y |
|
Warnung C6387: <Argument> kann <Wert> sein: Dies entspricht nicht der Funktionsspezifikation von <Funktionsname>: Zeilen: x, y |
|
Warnung C6388: <Argument> kann nicht <Wert> sein: Dies entspricht nicht der Funktionsspezifikation von <Funktionsname>: Zeilen: x, y |
|
Warnung C6400: Verwendung von <Funktionsname> für einen Vergleich mit der Konstantenzeichenfolge <Zeichenfolgenname> ohne Berücksichtigung von Groß- und Kleinschreibung. Führt bei nicht englischen Gebietsschemas zu unerwarteten Ergebnissen. |
|
Warnung C6401: Verwendung von <Funktionsname> in einem Standardgebietsschema für einen Vergleich mit der Konstantenzeichenfolge <Zeichenfolgenname> ohne Berücksichtigung von Groß- und Kleinschreibung. Führt bei nicht englischen Gebietsschemas zu unerwarteten Ergebnissen. |
|
Warnung C6500: Ungültige Anmerkung: Der Wert für die <Name>-Eigenschaft ist ungültig. |
|
Warnung C6501: Anmerkungskonflikt: Die <Name>-Eigenschaft verursacht einen Konflikt mit einer früher angegebenen Eigenschaft. |
|
Warnung C6503: Anmerkungskonflikt: Verweise dürfen nicht mit NULL=Yes oder NULL=Maybe markiert werden. |
|
Warnung C6504: Ungültige Anmerkung: Die NULL-Eigenschaft darf nur für Werte des Zeigertyps, des Typs Zeiger-auf-Member oder für Arraytypen verwendet werden. |
|
Warnung C6505: Ungültige Anmerkung: Die MustCheck-Eigenschaft darf nicht für Werte vom Typ void verwendet werden. |
|
Warnung C6506: Ungültige Anmerkung: Die <Name>-Eigenschaft darf nur für Werte des Zeigertyps oder für Arraytypen verwendet werden. |
|
Warnung C6507: Anmerkungskonflikt: Die Null-Eigenschaft bei Deref=0 einer Postbedingung muss eine Teilmenge der Null-Eigenschaft der Vorbedingung sein. |
|
Warnung C6508: Ungültige Anmerkung: Schreibzugriff ist für konstante Werte nicht zulässig. |
|
Warnung C6509: Ungültige Anmerkung: Auf return kann nicht von einer Vorbedingung aus verwiesen werden. |
|
Warnung C6510: Ungültige Anmerkung: Die NullTerminated-Eigenschaft darf nur für Werte des Zeigertyps oder für Arraytypen verwendet werden. |
|
Warnung C6511: Ungültige Anmerkung: Die MustCheck-Eigenschaft muss Yes oder No sein. |
|
Warnung C6512: Ungültige Anmerkung: Die Null-Eigenschaft muss Maybe sein, wenn die Valid-Eigenschaft No ist. |
|
Warnung C6513: Ungültige Anmerkung: Für ElementSizeConst sind zusätzliche Größeneigenschaften erforderlich. |
|
Warnung C6514: Ungültige Anmerkung: Der Wert der <Name>-Eigenschaft überschreitet die Größe des Arrays. |
|
Warnung C6515: Ungültige Anmerkung: Die <Name>-Eigenschaft darf nur für Werte vom Typ pointer verwendet werden. |
|
Warnung C6516: Ungültige Anmerkung: Für das <Name>-Attribut wurden keine Eigenschaften angegeben. |
|
Warnung C6517: Anmerkungskonflikt: ValidElementsConst und ValidBytesConst dürfen nicht für Puffer angegeben werden, die nicht gelesen werden können. |
|
Warnung C6518: Anmerkungskonflikt: WriteableElementsConst und WriteableBytesConst dürfen nicht für Puffer angegeben werden, die nicht geschrieben werden können. |
|
Warnung C6521: Ungültige Größenangabe: Der *-Operator kann nur auf Zeigertypen angewendet werden. |
|
Warnung C6522: Ungültige Größenangabe: Der Ausdruck muss einen ganzzahligen Typ aufweisen. |
|
Warnung C6523: Ungültige Größenangabe: Der <Name>-Parameter wurde nicht gefunden. |
|
Warnung C6525: Ungültige Größenangabe: Der Eigenschaftenwert ist möglicherweise ungültig. |
|
Warnung C6526: Ungültige Größenangabe: Der Ausdruck muss einen Zeiger- oder Arraytyp aufweisen. |
|
Warnung 6530: Unbekannter Formatzeichenfolgenstil <Name>. |
|
Warnung C6535: Der Puffer kann nicht die Größe <n>, größer als max(size_t), aufweisen. |
Siehe auch
Konzepte
Richtlinien für das Verfassen von sicherem Code