C6260
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
warning C6260: sizeof * sizeof is almost always wrong, did you intend to use a character count or a byte count?
This warning indicates that the results of two sizeof
operations have been multiplied together. The C/C++ sizeof
operator returns the number of bytes of storage an object uses. It is typically incorrect to multiply it by another sizeof
operation; usually one is interested in the number of bytes in an object or the number of elements in an array (for example the number of wide-characters in an array).
There is some unintuitive behavior associated with sizeof
operator. For example, in C, the sizeof ('\0') == 4,
because a character is of an integral type. In C++, the type of a character literal is char
, so sizeof ('\0') == 1
. However, in both C and C++, the following is true:
sizeof ("\0") == 2.
Example
The following code generates this warning:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
To correct this warning, use the following code:
#include <windows.h>
void f( )
{
int i;
i= sizeof (L"String") / sizeof (WCHAR);
/* or to get bytes */
i = sizeof (L"String");
// code ...
}