C6260
Ostrzeżenie C6260: sizeof * sizeof prawie zawsze jest niewłaściwy, czy ma być używana liczba znaków lub liczbę bajtów?
To ostrzeżenie wskazuje, że wyniki dwóch sizeof operacji są przemnażane razem.C/C++ sizeof operator zwraca liczbę bajtów pamięci używa obiektu.Zazwyczaj niepoprawne należy pomnożyć go przez inną jest sizeof operacji; Zazwyczaj jeden jest zainteresowany liczba bajtów w obiekcie lub liczba elementów w tablicy (na przykład liczba wide znaków w tablicy).
Istnieje kilka unintuitive zachowanie związane z sizeof operatora.Na przykład w C sizeof ('\0') == 4, , ponieważ znak jest typem całkowitym.W języku C++ jest typu literał znakowy char, więc sizeof ('\0') == 1.Jednakże w c i C++ są spełnione następujące:
sizeof ("\0") == 2.
Przykład
Poniższy kod generuje ostrzeżenie to:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
Aby poprawić to ostrzeżenie, należy użyć następującego kodu:
#include <windows.h>
void f( )
{
int i;
i= sizeof (L"String") / sizeof (WCHAR);
/* or to get bytes */
i = sizeof (L"String");
// code ...
}