Sdílet prostřednictvím


C6269

upozornění C6269: možné nesprávné pořadí operací: ignorováno zrušení reference

Toto upozornění indikuje, že výsledek přístupu přes ukazatel je ignorován, což vyvolává otázku, proč je vlastně použito přístupu přes ukazatel.

Kompilátor bude správně optimalizovat bezdůvodné dereference.V některých případech však tato vada může odrážet prioritu nebo logickou chybu.

Obvyklou příčinou této vady je výraz ve formuláři:

*p++;

Pokud je záměrem tohoto výrazu jednoduše zvýšit ukazatel p, pak je přístup přes ukazatel zbytečný. Avšak, pokud je záměrem zvyšovat umístění, na které p ukazuje, pak se program nebude chovat dle očekávání, protože konstrukce *p++ je interpretována jako * (p++).místo (*p)++.

Příklad

Následující kód generuje toto upozornění:

#include <windows.h>

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

Chcete-li opravit toto upozornění, použijte závorky tak, jak je ukázáno v následujícím kódu:

#include <windows.h>

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