C6334
경고 C6334: 연산자가 있는 식에 sizeof 연산자를 사용하면 예기치 않은 결과가 발생할 수 있습니다.
이 경고는 sizeof 연산자를 잘못 사용했음을 나타냅니다. sizeof 연산자를 식에 적용하면 그 결과는 결과 식의 형식 크기입니다.
예를 들어, 다음 코드에서
char a[10];
size_t x;
x = sizeof (a - 1);
결과 식이 더 이상 배열 a에 대한 포인터가 아니라 단순히 포인터이기 때문에 x에 9가 아니라 4 값이 할당됩니다.
예제
다음 코드에서는 이 경고를 발생시킵니다.
void f( )
{
size_t x;
char a[10];
x= sizeof (a - 4);
// code...
}
이 경고를 해결하려면 다음 코드를 사용합니다.
void f( )
{
size_t x;
char a[10];
x= sizeof (a) - 4;
// code...
}