Freigeben über


C6269

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

Diese Warnung gibt an, dass das Ergebnis einer Zeigerdereferenzierung ignoriert wird, wodurch die Frage aufgeworfen wird, warum überhaupt eine Zeigerdereferenzierung durchgeführt wird.

Der Compiler optimiert und entfernt die unnötige Dereferenzierung ordnungsgemäß.In einigen Fällen hingegen reflektiert dieser Fehler möglicherweise einen Fehler in der Rangfolge oder einen logischen Fehler.

Häufig ist dieser Fehler auf eine Ausdrucksanweisung in der folgenden Form zurückzuführen:

*p++;

Wenn mithilfe dieser Anweisung einfach der Zeiger p inkrementiert werden soll, ist eine Dereferenzierung unnötig; wenn hingegen die Position inkrementiert werden soll, auf die p zeigt, verhält sich das Programm nicht wie beabsichtigt, weil das *p++-Konstrukt als * (p++) interpretiert wird.anstelle von (*p)++.

Beispiel

Der folgende Code generiert diese Warnung:

#include <windows.h>

void f( int *p )
{
    // code ...
  if( p != NULL )
    *p++;
    // code ...
}

Um diese Warnung zu korrigieren, verwenden Sie Klammern, wie im folgenden Code dargestellt:

#include <windows.h>

void f( int *p )
{
    // code ...
  if( p != NULL )
    (*p)++;
    // code ...
}