Advertencia C6260

sizeof * sizeof es casi siempre incorrecto, ¿tenía intención de usar un recuento de caracteres o un recuento de bytes?

Esta advertencia indica que los resultados de dos operaciones sizeof se han multiplicado juntos.

Comentarios

El operador sizeof de C/C++ devuelve el número de bytes de almacenamiento que usa un objeto. Normalmente es incorrecto multiplicarlo por otra sizeof operación. Normalmente, le interesa el número de bytes de un objeto o el número de elementos de una matriz (por ejemplo, el número de caracteres anchos de una matriz).

Hay algún comportamiento no deseado asociado con sizeof el operador . Por ejemplo, en C, sizeof ('\0') == 4, porque un carácter es de un tipo entero. En C++, el tipo de un literal de carácter es char, por lo que sizeof ('\0') == 1. Sin embargo, en C y C++, se cumple la siguiente relación:

sizeof ("\0") == 2

Nombre del análisis de código: USEOFBYTEAREA

Ejemplo

El código siguiente genera esta advertencia:

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

Para corregir esta advertencia, utilice el código siguiente:

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

Consulte también