Avertissement C6269

Ordre incorrect possible des opérations : dereference ignorée

Cet avertissement indique que le résultat d’une déréférencement de pointeur est ignoré, ce qui soulève la question de la raison pour laquelle le pointeur est déréférencement au premier endroit.

Notes

Le compilateur optimise correctement la déréférence gratuite. Toutefois, dans certains cas, ce défaut peut refléter une priorité ou une erreur logique.

L’une des causes courantes de ce défaut est une instruction d’expression du formulaire :

*p++;

Si l’intention de cette instruction est simplement d’incrémenter le pointeur p, la déréférencement n’est pas nécessaire ; toutefois, si l’intention consiste à incrémenter l’emplacement vers lequel p pointe, le programme ne se comporte pas comme prévu, car p++ la construction est interprétée comme (p++) étant au lieu de (*p)++.

Nom de l’analyse du code : POINTER_DEREF_DISCARDED

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>

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

Pour corriger cet avertissement, utilisez des parenthèses comme indiqué dans le code suivant :

#include <windows.h>

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