数据类型-排序和代码大小
Data Types - Ordering and Code Size
在c/c++中,具有不同数据类型的变量的排序如何影响代码的大小?
我看到的例子涉及4个结构,每个结构有4个变量。变量的类型为int、char、float和BYTE;每个结构具有相同数量的变量(即4),并且在每个结构中被命名为相同的。唯一的区别是变量的顺序。
我知道integer、char和float有不同的大小(即int 4字节等),但这些类型的布局如何影响代码大小。
提前感谢!
欢迎来到结构填充的奇妙世界。
在不讨论编译器特定的结构填充选项的情况下,最好的建议是将较大的元素放在结构的前面,然后向下移动。在您的示例中,我会为它们排序float、int、BYTE和char。
每种类型都有一个最适合它的内存对齐;这将是类型的大小,或者更大。编译器为您管理这一点,所以大多数时候您不需要担心它,它会在结构中插入填充,以便下一个元素处于自己的最佳对齐状态。按照从大到小的顺序,可以最大限度地提高下一个元素已经在边界上并且不需要任何填充的概率。
相关文章:
- 我不明白这段代码是如何对这个pythonlist()进行排序的,也不明白如何用C++中的向量来重现它
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 使用 std::vector C++快速排序,EXC_BAD_ACCESS代码 2
- 在实现合并排序代码时无法计算所有反转
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 我怎么不能按课程代码的降序对数字进行排序
- C++17.处理使用 auto 相关的模板参数.代码排序困难
- 排序程序的意外错误代码
- 为什么我的代码没有对数组中第二个索引上的数据进行排序?
- 为什么此代码上的排序算法不调用类的交换版本?
- 我的选择排序代码是否存在导致它跳过数组中的元素的问题?
- 此气泡排序代码中的错误是什么?
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- 合并排序代码中的分段错误
- 我的C++合并排序代码有什么问题?
- 添加气泡排序代码以排列列表
- C 代码:关于排序的搜索测试示例
- 我写了一个快速的排序代码,逻辑似乎很正确,但是控制台上没有输出
- shell将伪代码排序为c++代码