Warnung C6269
Mögliche falsche Reihenfolge von Vorgängen: Dereference ignoriert
Diese Warnung weist darauf hin, dass das Ergebnis einer Zeigereinleitung ignoriert wird, was die Frage aufwirft, warum der Zeiger an erster Stelle abgeleitet wird.
Hinweise
Der Compiler optimiert die überflüssige Ableitung ordnungsgemäß. In einigen Fällen kann dieser Fehler jedoch einen Rang- oder Logikfehler widerspiegeln.
Eine häufige Ursache für diesen Fehler ist eine Ausdrucksanweisung des Formulars:
*p++;
Wenn die Absicht dieser Anweisung lediglich das Inkrementieren des Zeigers p
ist, ist die Ableitung unnötig. Wenn die Absicht jedoch besteht, die Stelle p
zu erhöhen, auf die zeigt, verhält sich das Programm nicht wie beabsichtigt, da p++
das Konstrukt anstelle (p++)
von (*p)++
.
Codeanalysename: POINTER_DEREF_DISCARDED
Beispiel
Der folgende Code generiert diese Warnung:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
*p++;
// code ...
}
Verwenden Sie zum Korrigieren dieser Warnung Klammern, wie im folgenden Code gezeigt:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
(*p)++;
// code ...
}