Compartilhar via


C6383

Aviso C6383: memória intermédia devido à conversão de uma contagem de elementos em uma contagem de bytes: uma contagem de elemento é esperada para o parâmetro <number> na chamada para <function>

Este aviso indica que uma contagem de bytes não constante está sendo passada quando uma contagem de elemento é necessária.Normalmente, isso ocorre quando uma variável é multiplicada pela sizeof um tipo, mas sugere a análise de código que uma contagem do elemento é 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 o sizeof um tipo, como mostrado no código a seguir:

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 de manipulação de cadeia de caracteres seguras:

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

Operador sizeof