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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de