다음을 통해 공유


C6383

경고 C6383: 요소 수를 바이트로 변환하여 버퍼 오버런이 발생했습니다. <function>에 대한 호출에서 매개 변수 <number>에는 요소 수를 사용해야 합니다.

이 경고는 요소 수가 필요한데 상수가 아닌 바이트 수가 전달되고 있음을 나타냅니다.변수를 형식의 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 연산자