了解 C 中的类大小确定
在编译时确定 C 类的大小需要了解数据对齐原则。类中的每个成员都有大小和对齐要求。
大小和对齐计算过程
在编译期间,编译器将运行大小 (S) 初始化为零,并对齐要求 (A) 到 1(字节)。对于班级中的每个成员:
处理完所有成员后,班级的最终规模就确定了。它是将 S 的值调整为整个类 (A) 对齐要求的倍数。
对齐注意事项
示例
提供的代码演示了此过程:
<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 具有相同的成员,但由于 __m128i 的对齐要求(强制使用 16 字节边界)而更大(48 字节)。 TestClass4 具有不同的数据成员排序,具有不同的对齐方式和大小(32 字节)。
以上是数据对齐如何影响 C 类的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!