경고 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 ...
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기