数据类型-排序和代码大小

Data Types - Ordering and Code Size

本文关键字:代码 排序 数据类型      更新时间:2023-10-16

在c/c++中,具有不同数据类型的变量的排序如何影响代码的大小?

我看到的例子涉及4个结构,每个结构有4个变量。变量的类型为int、char、float和BYTE;每个结构具有相同数量的变量(即4),并且在每个结构中被命名为相同的。唯一的区别是变量的顺序。

我知道integer、char和float有不同的大小(即int 4字节等),但这些类型的布局如何影响代码大小。

提前感谢!

欢迎来到结构填充的奇妙世界。

在不讨论编译器特定的结构填充选项的情况下,最好的建议是将较大的元素放在结构的前面,然后向下移动。在您的示例中,我会为它们排序float、int、BYTE和char。

每种类型都有一个最适合它的内存对齐;这将是类型的大小,或者更大。编译器为您管理这一点,所以大多数时候您不需要担心它,它会在结构中插入填充,以便下一个元素处于自己的最佳对齐状态。按照从大到小的顺序,可以最大限度地提高下一个元素已经在边界上并且不需要任何填充的概率。