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') == 4
car 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 ...
}