경고 C6334
sizeof
연산자가 있는 식에 적용된 연산자는 예기치 않은 결과를 생성할 수 있습니다.
연산자는 sizeof
식에 적용할 때 결과 식 형식의 크기를 생성합니다.
코드 분석 이름: SIZEOFEXPR
다음 코드는 이 경고를 생성합니다. a - 4
식 sizeof
이므로 해당 포인터에 있는 구조체의 크기가 아니라 결과 포인터의 크기를 반환합니다.
void f( )
{
size_t x;
char a[100];
x = sizeof(a - 4);
assert(x == 96); //assert fails since x == sizeof(char*)
}
이 경고를 수정하려면 인수가 아닌 반환 값 sizeof
으로 작업하고 있는지 확인합니다.
void f( )
{
size_t x;
char a[100];
x = sizeof(a) - 4;
assert(x == 96); //assert succeeds
}