다음을 통해 공유


경고 C6260

sizeof * sizeof 거의 항상 잘못되었습니다. 문자 수 또는 바이트 수를 사용하려고 했습니까?

이 경고는 두 sizeof 작업의 결과가 함께 곱되었음을 나타냅니다.

설명

C/C++ sizeof 연산자는 개체에서 사용하는 스토리지의 바이트 수를 반환합니다. 일반적으로 다른 sizeof 작업을 곱하는 것은 잘못된 것입니다. 일반적으로 개체의 바이트 수 또는 배열의 요소 수(예: 배열의 와이드 문자 수)에 관심이 있습니다.

연산자에 sizeof 연결된 몇 가지 직관적이지 않은 동작이 있습니다. 예를 들어 C sizeof ('\0') == 4에서는 문자가 정수 형식이므로 C++에서 문자 리터럴의 형식은 char입니다 sizeof ('\0') == 1. 그러나 C 및 C++에서는 다음 관계가 true입니다.

sizeof ("\0") == 2

코드 분석 이름: USEOFBYTEAREA

예시

다음 코드는 이 경고를 생성합니다.

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

이 경고를 수정하려면 다음 코드를 사용합니다.

#include <windows.h>

void f( )
{
  // use divide to calculate how many WCHAR characters are in the string
  int i = sizeof (L"String") / sizeof (WCHAR);

  // get the number of bytes in the character array
  int j = sizeof (L"String");

  // code ...
}

참고 항목