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

C6001

Warnung C6001: Nicht initialisierter Speicher <Variable> wird verwendet.

C6011

Warnung C6011: NULL-Zeiger <Name> wird dereferenziert.

C6029

Warnung C6029: Möglicher Pufferüberlauf im Aufruf von <Funktion>: Verwendung des ungeprüften Wertes

C6031

Warnung C6031: Der Rückgabewert wird ignoriert: <Funktion> gibt ggf. unerwarteten Wert zurück.

C6053

Warnung C6053: Durch den Aufruf von <Funktion> wird die Zeichenfolge <Variable> möglicherweise nicht mit 0 (null) beendet.

C6054

Warnung C6054: Die Zeichenfolge <Variable> darf nicht mit 0 (null) enden.

C6057

Warnung C6057: Pufferüberlauf aufgrund einer nicht übereinstimmenden Anzahl von Zeichen/Bytes im Aufruf von <Funktion>

C6059

Warnung C6059: Falscher Längenparameter im Aufruf von <Funktion>. Übergeben Sie die Anzahl der verbleibenden Zeichen, nicht die Puffergröße von <Variable>.

C6063

Warnung C6063: Fehlendes Zeichenfolgenargument für <Funktion> entsprechend dem Konvertierungsspezifizierer <Nummer>

C6064

Warnung C6064: Fehlendes Ganzzahlargument für <Funktion> entsprechend dem Konvertierungsspezifizierer <Nummer>

C6066

Warnung C6066: Ein Nichtzeiger wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch ein Zeiger erforderlich.

C6067

Warnung C6067: Der <Nummer>-Parameter im Aufruf von <Funktion> muss die Adresse der Zeichenfolge sein.

C6200

Warnung C6200: Der Index <Name> liegt für den Nichtstapelpuffer <Variable> außerhalb des gültigen Indexbereichs von <Minimum> bis <Maximum>.

C6201

Warnung C6201: Pufferüberlauf für <Variable> (möglicherweise stapelzugeordnet): Der Index <Name> liegt außerhalb des gültigen Indexbereichs von <Minimum> bis <Maximum>.

C6202

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>.

C6203

Warnung C6203: Pufferüberlauf für Puffer <Variable> im Aufruf von <Funktion>: Die Länge <Größe> überschreitet die Puffergröße.

C6204

Warnung C6204: Möglicher Pufferüberlauf im Aufruf von <Funktion>: Verwendung des ungeprüften Parameters <Variable>.

C6209

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?

C6211

Warnung C6211: Speicherverlust <Zeiger> infolge einer Ausnahme. Verwenden Sie einen lokalen Catch-Block, um den Arbeitsspeicher zu bereinigen.

C6214

Warnung C6214: Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT in Boolean

C6215

Warnung C6215: Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: Boolean in HRESULT

C6216

Warnung C6216: Vom Compiler eingefügte Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: Boolean in HRESULT

C6217

Warnung C6217: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit 'not' getestet. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED.

C6219

Warnung C6219: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit 1 oder TRUE verglichen. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED.

C6220

Warnung C6220: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit -1 verglichen. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED.

C6221

Warnung C6221: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit einer ganzen Zahl verglichen. Verwenden Sie stattdessen das Makro SUCCEEDED oder FAILED.

C6225

Warnung C6225: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird 1 oder TRUE zugewiesen. Verwenden Sie stattdessen S_FALSE.

C6226

Warnung C6226: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird -1 zugewiesen. Verwenden Sie stattdessen E_FAIL.

C6230

Warnung C6230: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird in einem Boolean-Kontext verwendet.

C6235

Warnung C6235: (<Konstante ungleich 0> || <Ausdruck>) ist immer eine Konstante ungleich 0.

C6236

Warnung C6236: (<Ausdruck> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0.

C6237

Warnung C6237: (<Null> && <Ausdruck>) ist immer 0 (null). <Ausdruck> wird niemals ausgewertet und hat möglicherweise Nebeneffekte.

C6239

Warnung C6239: (<Konstante ungleich 0> && <Ausdruck>) wird immer zum Ergebnis von <Ausdruck> ausgewertet. Wollten Sie den bitweisen AND-Operator verwenden?

C6240

Warnung C6240: (<Ausdruck> && <Konstante ungleich 0>) wird immer zum Ergebnis von <Ausdruck> ausgewertet. Wollten Sie den bitweisen AND-Operator verwenden?

C6242

Warnung C6242: Ein Aussprung aus diesem Try-Block erzwingt eine lokale Entladung und hat schwere Leistungseinbußen zur Folge.

C6244

Warnung C6244: Die lokale Deklaration von <Variable> blendet die frühere Deklaration in Zeile <Zeile> von <Datei> aus.

C6246

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>.

C6248

Warnung C6248: Das Festlegen von DACL für einen SECURITY_DESCRIPTOR auf NULL hat ein ungeschütztes Objekt zur Folge.

C6250

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.

C6255

Warnung C6255: _alloca kennzeichnet Fehler durch Auslösen einer Stapelüberlaufausnahme. Verwenden Sie stattdessen _alloca_s.

C6258

Warnung C6258: Die Verwendung von TerminateThread lässt keine ordnungsgemäße Threadbereinigung zu.

C6259

Warnung C6259: Der bezeichnete Code ist nicht erreichbar: (<Ausdruck> & < Konstante >) in einem switch-Ausdruck kann nicht zu <case-Bezeichnung> ausgewertet werden.

C6260

Warnung C6260: sizeof * sizeof ist nahezu immer falsch. Wollten Sie eine Zeichenanzahl oder eine Byteanzahl verwenden?

C6262

Warnung C6262: Die Funktion verwendet <Konstante> Bytes vom Stapel und überschreitet /analyze:stacksize<Konstante>. Verschieben Sie einige Daten auf den Heap.

C6263

Warnung C6263: Verwendung von _alloca in einer Schleife: Dies kann schnell zu einem Stapelüberlauf führen.

C6268

Warnung C6268: Falsche Operationsreihenfolge: (<TYP1>)(<TYP2>)x + y. Möglicherweise fehlen Klammern: (<TYP1>)((<TYP2>)x + y)

C6269

Warnung C6269: Möglicherweise falsche Operationsreihenfolge: Dereferenzierung wird ignoriert.

C6270

Warnung C6270: Fehlendes Gleitkommaargument für <Funktion>: Fügen Sie ein Gleitkommaargument entsprechend dem Konvertierungsspezifizierer <Nummer> hinzu.

C6271

Warnung C6271: Ein zusätzliches Argument wurde an <Funktion> übergeben: Der <Nummer>-Parameter wird von der Formatzeichenfolge nicht verwendet.

C6272

Warnung C6272: Ein Nichtgleitkommaargument wurde als Argument <Nummer> übergeben. Im Aufruf von <Funktion> ist jedoch ein Gleitkommaargument erforderlich.

C6273

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.

C6274

Warnung C6274: Ein Nichtzeiger wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch ein Zeichen erforderlich.

C6276

Warnung C6276: Umwandlung zwischen semantisch unterschiedlichen Zeichenfolgentypen: char * in wchar_t *. Die Verwendung einer ungültigen Zeichenfolge kann undefiniertes Verhalten zur Folge haben.

C6277

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.

C6278

Warnung C6278: <Variable> wird mit dem new []-Arrayoperator zugeordnet, aber mit dem delete-Skalaroperator gelöscht. Destruktoren werden nicht aufgerufen.

C6279

Warnung C6279: <Variable> wird mit dem new-Skalaroperator zugeordnet, aber mit dem delete []-Arrayoperator gelöscht.

C6280

Warnung C6280: <Variable> wird mit <Funktion> zugeordnet, aber mit <Funktion> gelöscht.

C6281

Warnung 6281: Falsche Operationsreihenfolge: Relationale Operatoren haben Vorrang vor bitweisen Operatoren.

C6282

Warnung C6282: Falscher Operator: Zuweisung einer Konstanten im Boolean-Kontext. Verwenden Sie stattdessen '=='.

C6283

Warnung C6283: <Variable> wird mit dem new []-Arrayoperator zugeordnet, aber mit dem delete-Skalaroperator gelöscht.

C6284

Warnung C6284: Ein Objekt wurde als '% d'-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch eine Zeichenfolge erforderlich.

C6285

Warnung C6285: (<Konstante ungleich 0> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0. Wollten Sie den bitweisen AND-Operator verwenden?

C6286

Warnung C6286: (<Konstante ungleich 0> || <Ausdruck>) ist immer eine Konstante ungleich 0. <Ausdruck> wird niemals ausgewertet und hat möglicherweise Nebeneffekte.

C6287

Warnung C6287: Redundanter Code: Die Teilausdrücke links und rechts sind identisch.

C6288

Warnung C6288: Falscher Operator: Der gegenseitige Einschluss über && ist immer 0 (null). Wollten Sie stattdessen || verwenden?

C6289

Warnung C6289: Falscher Operator: Der gegenseitige Ausschluss über || ist immer eine Konstante ungleich 0. Wollten Sie stattdessen && verwenden?

C6290

Warnung C6290: Bitweise Operation auf logischem Ergebnis: ! hat Vorrang vor &. Verwenden Sie stattdessen && oder (!(x & y)).

C6291

Warnung C6291: Bitweise Operation auf logischem Ergebnis: ! hat Vorrang vor |. Verwenden Sie stattdessen || oder (!(x | y)).

C6292

Warnung C6292: Falsch definierte For-Schleife: Vom Höchstwert wird nach oben gezählt.

C6293

Warnung C6293: Falsch definierte For-Schleife: Vom Minimalwert wird nach unten gezählt.

C6294

Warnung C6294: Falsch definierte For-Schleife: Die Ausgangsbedingung erfüllt den Test nicht. Der Schleifenkörper wird nicht ausgeführt.

C6295

Warnung C6295: Falsch definierte For-Schleife: Die <Variable>-Werte liegen immer im Bereich von "min" bis "max". Die Schleife wird endlos ausgeführt.

C6296

Warnung C6296: Falsch definierte For-Schleife: Der Schleifenkörper wird nur einmal ausgeführt.

C6297

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.

C6298

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.

C6299

Warnung C6299: Der explizite Vergleich eines Bitfelds mit einem Boolean-Typ führt zu unerwarteten Ergebnissen.

C6302

Warnung C6299: Der explizite Vergleich eines Bitfelds mit einem Boolean-Typ führt zu unerwarteten Ergebnissen.

C6303

Warnung C6303: Formatzeichenfolgen stimmen nicht überein: Eine Zeichenfolge mit Breitzeichen wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch eine Zeichenfolge erforderlich.

C6305

Warnung C6305: Potenzieller Konflikt zwischen sizeof-Menge und countof-Menge.

C6306

Warnung C6306: Falscher Aufruf von <Funktion>: Verwenden Sie <Funktion>, das va_list als Argument annimmt.

C6308

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.

C6309

Warnung C6309: Das Argument <Nummer> ist NULL: Dies entspricht nicht der Funktionsspezifikation von <Funktion>.

C6310

Warnung C6310: Eine unzulässige Konstante im Ausnahmefilter kann unerwartetes Verhalten verursachen.

C6312

Warnung C6312: Mögliche Endlosschleife: Verwendung der EXCEPTION_CONTINUE_EXECUTION-Konstanten im Ausnahmefilterausdruck einer try-except-Anweisung.

C6313

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.

C6314

Warnung C6314: Falsche Operationsreihenfolge: Der bitweise OR-Operator hat Vorrang vor dem bedingten Ausdrucksoperator. Verdeutlichen Sie Ihre Absicht mit Klammern.

C6315

Warnung C6315: Falsche Operationsreihenfolge: Der bitweise AND-Operator hat Vorrang vor dem bitweisen OR-Operator. Verdeutlichen Sie Ihre Absicht mit Klammern.

C6316

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.

C6317

Warnung C6317: Falscher Operator: Der logische NOT-Operator (!) ist nicht mit dem Einerkomplement-Operator (~) auswechselbar.

C6318

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.

C6319

Warnung C6319: Bei Verwendung des Komma-Operators in einem getesteten Ausdruck wird das linke Argument ignoriert, wenn es keine Nebeneffekte hat.

C6320

Warnung C6320: Der Ausnahmefilterausdruck ist die EXCEPTION_EXECUTE_HANDLER-Konstante. Hierdurch werden möglicherweise Ausnahmen maskiert, für die keine Behandlung vorgesehen war.

C6322

Warnung C6322: leerer _except-Block

C6323

Warnung 6323: Verwendung eines arithmetischen Operators auf Boolean-Typ(en)

C6324

Warnung C6324: Potenziell falsche Verwendung von <Funktion1>: Wollten Sie <Funktion2> verwenden?

C6326

Warnung C6326: Potenzieller Vergleich einer Konstanten mit einer anderen Konstanten.

C6327

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.

C6328

Warnung von C6328: <Typ> wurde als <Nummer>-Parameter übergeben. <Typ> ist jedoch im Aufruf von <Funktion> erforderlich.

C6331

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.

C6332

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.

C6333

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.

C6334

Warnung C6334: Der sizeof-Operator kann bei Anwendung auf einen Ausdruck mit einem Operator unerwartete Ergebnisse aufweisen.

C6335

Warnung C6335: Verlust in Prozessinformationshandle <Handlename>

C6336

Warnung C6336: Ein arithmetischer Operator hat Vorrang vor einem Frageoperator. Verdeutlichen Sie Ihre Absicht mit Klammern.

C6381

Warnung C6381: Zum Herunterfahren der API <Funktion> ist ein gültiges dwReason oder lpMessage erforderlich.

C6383

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.

C6384

Warnung C6384: sizeof eines Zeigers wird durch einen anderen Wert dividiert

C6385

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

C6386

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

C6387

Warnung C6387: <Argument> kann <Wert> sein: Dies entspricht nicht der Funktionsspezifikation von <Funktionsname>: Zeilen: x, y

C6388

Warnung C6388: <Argument> kann nicht <Wert> sein: Dies entspricht nicht der Funktionsspezifikation von <Funktionsname>: Zeilen: x, y

C6400

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.

C6401

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.

C6500

Warnung C6500: Ungültige Anmerkung: Der Wert für die <Name>-Eigenschaft ist ungültig.

C6501

Warnung C6501: Anmerkungskonflikt: Die <Name>-Eigenschaft verursacht einen Konflikt mit einer früher angegebenen Eigenschaft.

C6503

Warnung C6503: Anmerkungskonflikt: Verweise dürfen nicht mit NULL=Yes oder NULL=Maybe markiert werden.

C6504

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.

C6505

Warnung C6505: Ungültige Anmerkung: Die MustCheck-Eigenschaft darf nicht für Werte vom Typ void verwendet werden.

C6506

Warnung C6506: Ungültige Anmerkung: Die <Name>-Eigenschaft darf nur für Werte des Zeigertyps oder für Arraytypen verwendet werden.

C6507

Warnung C6507: Anmerkungskonflikt: Die Null-Eigenschaft bei Deref=0 einer Postbedingung muss eine Teilmenge der Null-Eigenschaft der Vorbedingung sein.

C6508

Warnung C6508: Ungültige Anmerkung: Schreibzugriff ist für konstante Werte nicht zulässig.

C6509

Warnung C6509: Ungültige Anmerkung: Auf return kann nicht von einer Vorbedingung aus verwiesen werden.

C6510

Warnung C6510: Ungültige Anmerkung: Die NullTerminated-Eigenschaft darf nur für Werte des Zeigertyps oder für Arraytypen verwendet werden.

C6511

Warnung C6511: Ungültige Anmerkung: Die MustCheck-Eigenschaft muss Yes oder No sein.

C6512

Warnung C6512: Ungültige Anmerkung: Die Null-Eigenschaft muss Maybe sein, wenn die Valid-Eigenschaft No ist.

C6513

Warnung C6513: Ungültige Anmerkung: Für ElementSizeConst sind zusätzliche Größeneigenschaften erforderlich.

C6514

Warnung C6514: Ungültige Anmerkung: Der Wert der <Name>-Eigenschaft überschreitet die Größe des Arrays.

C6515

Warnung C6515: Ungültige Anmerkung: Die <Name>-Eigenschaft darf nur für Werte vom Typ pointer verwendet werden.

C6516

Warnung C6516: Ungültige Anmerkung: Für das <Name>-Attribut wurden keine Eigenschaften angegeben.

C6517

Warnung C6517: Anmerkungskonflikt: ValidElementsConst und ValidBytesConst dürfen nicht für Puffer angegeben werden, die nicht gelesen werden können.

C6518

Warnung C6518: Anmerkungskonflikt: WriteableElementsConst und WriteableBytesConst dürfen nicht für Puffer angegeben werden, die nicht geschrieben werden können.

C6521

Warnung C6521: Ungültige Größenangabe: Der *-Operator kann nur auf Zeigertypen angewendet werden.

C6522

Warnung C6522: Ungültige Größenangabe: Der Ausdruck muss einen ganzzahligen Typ aufweisen.

C6523

Warnung C6523: Ungültige Größenangabe: Der <Name>-Parameter wurde nicht gefunden.

C6525

Warnung C6525: Ungültige Größenangabe: Der Eigenschaftenwert ist möglicherweise ungültig.

C6526

Warnung C6526: Ungültige Größenangabe: Der Ausdruck muss einen Zeiger- oder Arraytyp aufweisen.

C6530

Warnung 6530: Unbekannter Formatzeichenfolgenstil <Name>.

C6535

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

Weitere Ressourcen

Erkennen und Korrigieren von C/C++-Codefehlern