C 클래스는 컴파일 중 특정 규칙에 따라 결정된 방식으로 메모리를 차지합니다. 클래스의 크기는 포함된 데이터 멤버와 해당 정렬을 기준으로 계산됩니다.
컴파일러는 클래스를 분석할 때 각 데이터 멤버를 순서대로 평가합니다.
모든 데이터 멤버를 처리한 후 컴파일러는 클래스 크기를 공통 정렬 요구 사항의 배수로 조정합니다.
제공된 예에서:
둘 다 유사한 데이터 멤버(크기 8의 문자 배열 2개)를 가지므로 크기는 16바이트입니다.
TestClass1 및 TestClass2와 동일한 데이터 멤버가 포함되어 있지만 __m128i 데이터 멤버에는 16바이트 정렬이 필요합니다. 이 정렬은 char 배열의 정렬을 재정의하여 클래스 크기가 48바이트가 됩니다(정렬의 경우 16바이트, __m128i의 경우 16바이트, 추가 정렬의 경우 16바이트).
이 클래스에는 TestClass3과 동일한 데이터 멤버가 있지만 순서가 다릅니다. 그러나 정렬 규칙은 동일하게 유지되어 클래스 크기가 32바이트가 됩니다(첫 번째 char 배열의 경우 8바이트, 정렬의 경우 16바이트, __m128i의 경우 16바이트, 두 번째 char 배열의 경우 8바이트).
이러한 규칙은 최적화된 데이터 액세스 및 성능을 위한 효율적인 메모리 할당 및 정렬을 보장합니다.
위 내용은 C 컴파일러는 데이터 멤버 및 정렬을 기반으로 클래스 크기를 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!