Avertissement C6260

sizeof * sizeof est presque toujours incorrect, avez-vous l’intention d’utiliser un nombre de caractères ou un nombre d’octets ?

Cet avertissement indique que les résultats de deux sizeof opérations ont été multipliés ensemble.

Notes

L’opérateur C/C++ sizeof retourne le nombre d’octets de stockage qu’un objet utilise. Il est généralement incorrect de le multiplier par une autre sizeof opération. En règle générale, vous êtes intéressé par le nombre d’octets d’un objet ou le nombre d’éléments d’un tableau (par exemple, le nombre de caractères larges dans un tableau).

Il existe un comportement unintuit associé à sizeof l’opérateur. Par exemple, en C, sizeof ('\0') == 4car un caractère est d’un type intégral. En C++, le type d’un littéral de caractère est char.sizeof ('\0') == 1 Toutefois, dans C et C++, la relation suivante est vraie :

sizeof ("\0") == 2

Nom de l’analyse du code : USEOFBYTEAREA

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <windows.h>

void f( )
{
  // use divide to calculate how many WCHAR characters are in the string
  int i = sizeof (L"String") / sizeof (WCHAR);

  // get the number of bytes in the character array
  int j = sizeof (L"String");

  // code ...
}

Voir aussi