【概念辨析】结构体内存对齐
创始人
2024-05-28 13:13:46
0

一、什么是结构体内存对齐

        是使得结构体的每个成员能够在及其访问的特定存储单元上的一种方法。

        通过这种方法可以使得机器访问效率加快,也可以使得平台一致性变高。

二、结构体对齐的规则

有两组代码:

#define _CRT_SECURE_NO_WARNINGS#include using namespace std;struct A
{char a;int b;char c;
};
struct B
{char a;char b;int c;
};int main()
{cout << sizeof(A) << endl;cout << sizeof(B) << endl;return 0;
}

 

由此我们可以猜测是结构体的内存对齐发挥了作用。 

结构体内存对齐的规则:

1.对于每个成员变量找出它们的对齐数

        从成员中找出一个占字节数最大的,再与默认对齐数进行比较,这两个数中去一个较小值。

2.再找到一个最大对齐数

        这个最大对齐数(默认对齐数 与 所有成员变量类型最大的,两数中去一个较小值)是用来确定最后的结构体的大小,完成第一步,将所有成员变量存储在该区的地方以后,需要再根据这个数来确定结构体的总大小。(给这个数乘整数,让所有成员能够放得下)

示例:

 

 

 三、补充

        1.改变结构体默认内存数的方法:

#pragma pack()  //恢复默认对齐数
#pragma pack(x)  //x是想修改的默认对齐数

         2.第一个成员变量始终是对齐在与结构体偏移量为0处的地址(也就是相对于结构体来说是0地址处)

         3.节省空间的技巧是:使得占空间小的变量集中在一起

         4.内存对齐的意义:用空间换时间(机器访问效率提升)

相关内容

热门资讯

政策带旺消费,广州线下落地20... 2026年1月1日,随着新年钟声敲响,广东新年消费品以旧换新活动(即“国补”活动)正式启动。零点刚过...
日照市2026年基本医疗保险政... 日照市职工2026年基本医疗保险政策汇总一览表(暂行) 日照市居民2026年基本医疗保险政策汇总一...
“芙蓉花红”映民心 恒达社区答... 长沙晚报掌上长沙12月31日讯(通讯员 刘梦莹)12月30日,芙蓉区荷花园街道恒达社区开展“芙蓉花红...
*ST熊猫(600599)披露... 截至2025年12月31日收盘,*ST熊猫(600599)报收于9.93元,较前一交易日下跌4.98...
陆家嘴(600663)披露公司... 截至2025年12月31日收盘,陆家嘴(600663)报收于7.91元,较前一交易日上涨0.38%,...
宝泰隆(601011)披露控股... 截至2025年12月31日收盘,宝泰隆(601011)报收于3.4元,较前一交易日下跌0.87%,最...
ST帕瓦(688184)披露公... 截至2025年12月31日收盘,ST帕瓦(688184)报收于9.28元,较前一交易日下跌0.11%...
九鼎投资(600053)披露2... 截至2025年12月31日收盘,九鼎投资(600053)报收于19.87元,较前一交易日下跌1.73...
重庆啤酒(600132)披露与... 截至2025年12月31日收盘,重庆啤酒(600132)报收于52.24元,较前一交易日下跌0.4%...
黑龙江2026年以旧换新政策来... 原标题:汽车、家电等多品类可享补贴!黑龙江2026年以旧换新政策来了 黑龙江省商务厅于2025年12...