C의 클래스 크기 결정 이해
컴파일 시 C 클래스의 크기를 결정하려면 데이터 정렬 원칙을 이해해야 합니다. 클래스 내의 각 멤버에는 크기 및 정렬 요구 사항이 있습니다.
크기 및 정렬 계산 프로세스
컴파일하는 동안 컴파일러는 실행 크기(S)를 0으로 초기화하고 정렬 요구 사항(A)을 1(바이트)로. 수업의 각 구성원에 대해:
모든 회원을 처리한 후 최종 클래스 규모가 결정됩니다. 전체 클래스(A)의 정렬 요구 사항의 배수가 되도록 조정된 S 값입니다.
정렬 고려 사항
예
제공된 코드는 이 프로세스를 보여줍니다.
<code class="cpp">#include <xmmintrin.h> class TestClass1 { __m128i vect; }; // Size: 16 bytes class TestClass2 { char buf[8]; char buf2[8]; }; // Size: 16 bytes class TestClass3 { char buf[8]; __m128i vect; char buf2[8]; }; // Size: 48 bytes class TestClass4 { char buf[8]; char buf2[8]; __m128i vect; }; // Size: 32 bytes</code>
TestClass3은 TestClass1 및 TestClass2와 동일한 멤버를 갖고 있음에도 불구하고 16바이트 경계를 강제하는 __m128i의 정렬 요구 사항으로 인해 더 큽니다(48바이트). 데이터 멤버 순서가 다른 TestClass4는 정렬과 크기(32바이트)가 다릅니다.
위 내용은 데이터 정렬은 C 클래스의 크기에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!