C6383
Предупреждение C6383: переполнение буфера из-за преобразования счетчика элементов в счетчик байтов. Для параметра <номер> в вызове <функции> требуется счетчик элементов.
Данное предупреждение означает, что в ситуации, когда требовался счетчик элементов, передан неконстантный счетчик байтов.Как правило, подобная ситуация возникает, если переменная умножается на результат функции sizeof, примененный к типу, однако анализ кода рекомендует использовать счетчик элементов.
Пример
Данное предупреждение создается в следующем коде:
#include <string.h>
void f( wchar_t* t, wchar_t* s, int n )
{
// code...
wcsncpy (t, s, n*sizeof(wchar_t)); // warning 6383
// code ...
}
Для устранения этого предупреждения не умножайте переменную на результат применения функции sizeof к типу, как указано в следующем коде:
void f( wchar_t* t, wchar_t* s, int n )
{
// code
wcsncpy (t, s, n);
// code ...
}
В следующем фрагменте кода для устранения этого предупреждения используется функция безопасной обработки строк:
void f(wchar_t* t, wchar_t* s, size_t n)
{
// code...
wcsncpy_s( t, sizeof(s), s, n );
// code...
}
См. также
Ссылки
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l