Share via


C6260

경고 C6260: sizeof * sizeof의 결과는 거의 언제나 정확하지 않습니다. 문자 수 또는 바이트 수를 사용하려고 했습니까?

이 경고는 두 sizeof 연산의 결과를 서로 곱했음을 나타냅니다. C/C++ sizeof 연산자는 개체에서 사용하는 저장소의 바이트 수를 반환합니다. 일반적으로 다른 sizeof 연산으로 곱하는 것은 올바르지 않습니다. 대부분의 경우 이 연산은 개체의 바이트 수나 배열의 요소 수(예를 들어, 배열의 와이드 문자 수)를 확인하는 것이 목적이기 때문입니다.

sizeof 연산자에는 어느 정도 직관적이지 않은 동작이 있습니다. 예를 들어, C에서는 문자가 정수 계열 형식이므로 sizeof ('\0') == 4,입니다. C++에서는 문자 리터럴의 형식이 char이므로 sizeof ('\0') == 1입니다. 하지만 다음은 C와 C++ 모두에 해당됩니다.

sizeof ("\0") == 2. 

예제

다음 코드에서는 이 경고를 발생시킵니다.

#include <windows.h>

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

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

#include <windows.h>

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

참고 항목

참조

sizeof Operator

sizeof Operator (C)