Поделиться через


C6383

Обновлен: Ноябрь 2007

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

sizeof Operator