Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

C6260

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. 

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 ...
}
Show:
© 2015 Microsoft