C6383
Aviso C6383: estouro de buffer devido à conversão de uma contagem de elemento em uma contagem de byte: uma contagem de elemento é esperada para o parâmetro <número> na chamada para <função>
Esse aviso indica que uma contagem de bytes de constante não está sendo passada quando uma contagem de elementos é necessária.Em geral, isso ocorre quando uma variável é multiplicado por sizeof um tipo, mas a análise de código sugere que uma contagem de elementos é necessária.
Exemplo
O código a seguir gera este aviso:
#include <string.h>
void f( wchar_t* t, wchar_t* s, int n )
{
// code...
wcsncpy (t, s, n*sizeof(wchar_t)); // warning 6383
// code ...
}
Para corrigir esse aviso, não multiplique a variável com um tipo sizeof conforme mostrado no seguinte código:
void f( wchar_t* t, wchar_t* s, int n )
{
// code
wcsncpy (t, s, n);
// code ...
}
O código a seguir corrige esse aviso usando a função segura de manipulação de cadeia de caracteres:
void f(wchar_t* t, wchar_t* s, size_t n)
{
// code...
wcsncpy_s( t, sizeof(s), s, n );
// code...
}
Consulte também
Referência
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l