Advertencia C6269

Posible orden incorrecto de las operaciones: se omite la desreferencia

Esta advertencia indica que se omite el resultado de una desreferencia de puntero, lo que, en primer lugar, plantea la pregunta de por qué el puntero se está desreferenciando.

Comentarios

El compilador optimizará correctamente la desreferencia gratuita. Sin embargo, en algunos casos, este defecto puede reflejar una prioridad o un error lógico.

Una causa común de este defecto es una instrucción de expresión con el formato:

*p++;

Si la intención de esta instrucción es simplemente incrementar el puntero p, la desreferencia es innecesaria; sin embargo, si la intención es incrementar la ubicación a la que p apunta, el programa no se comportará según lo previsto porque p++ la construcción se interpreta como (p++) en lugar de (*p)++.

Nombre del análisis de código: POINTER_DEREF_DISCARDED

Ejemplo

El código siguiente genera esta advertencia:

#include <windows.h>

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

Para corregir esta advertencia, use paréntesis como se muestra en el código siguiente:

#include <windows.h>

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