Поделиться через


C6269

Предупреждение C6269: возможен неверный порядок операций: пропущено разыменование.

Данное предупреждение указывает, что результат разыменования указателя пропускается, однако возникает вопрос, почему разыменование указателя выполняется в первую очередь.

Компилятор корректно оптимизирует неуместное разыменование. Однако в некоторых случаях данный дефект может являться следствием ошибки приоритета или логики.

Одной из распространенных причин данного дефекта является оператор в форме:

*p++;

Если в результате данного оператора предполагалось просто увеличить указатель p, разыменование не требуется; однако если предполагалось увеличить расположение, на которое указывает p, то программа не будет вести себя ожидаемым образом, поскольку конструкция *p++ интерпретируется как * (p++). вместо (*p)++.

Пример

Данное предупреждение создается в следующем коде:

#include <windows.h>

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

Для устранения этого предупреждения используйте скобки, как указано в следующем коде:

#include <windows.h>

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