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 ...  
}  

See Also

sizeof Operator
sizeof Operator (C)