Предупреждение C6260
sizeof
*sizeof
почти всегда неправильно, вы намерены использовать число символов или число байтов?
Это предупреждение означает, что результаты двух sizeof
операций умножаются вместе.
Замечания
Оператор C/C++ sizeof
возвращает количество байтов хранилища, которые использует объект. Обычно неправильно умножать его на другую sizeof
операцию. Как правило, вы заинтересованы в количестве байтов в объекте или количестве элементов в массиве (например, число расширенных символов в массиве).
Существует некоторое непреднамеренное поведение, связанное с sizeof
оператором. Например, в C, sizeof ('\0') == 4
так как символ имеет целочисленный тип. В C++тип символьного литерала имеет значение char
, поэтому sizeof ('\0') == 1
. Однако в C и C++следующее отношение имеет значение true:
sizeof ("\0") == 2
Имя анализа кода: USEOFBYTEAREA
Пример
Следующий код создает это предупреждение:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
Чтобы исправить это предупреждение, используйте следующий код:
#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 ...
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по