【概念辨析】结构体内存对齐
创始人
2024-05-28 14:06:16
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.内存对齐的意义:用空间换时间(机器访问效率提升)

相关内容

热门资讯

ETF主力榜 | 工业有色ET...        2025年7月17日,工业有色ETF(560860.SH)收涨0.54%,主力资金(单...
普联软件:辅助客户开展数据要素... 投资者提问:在数据要素市场发展的背景下,公司怎样挖掘数据资产价值?董秘回答(普联软件SZ300996...
被问爆的牵牛花紫苎麻小衫!穿上... 当晨光初绽,一抹柔和的紫色透过薄雾轻轻晕染开来。这抹被稀释过的紫,来自清晨爬满篱笆的牵牛花,自有一股...
天顺风能:海上风电桩基项目从接... 投资者提问:董秘你好,想请教关于公司海外拓展的问题:公司与海外客户接触一般是分为哪几个阶段?比如初步...
临沧:烟叶变“金叶” 采烤正当...   原标题:烟叶变“金叶” 采烤正当时连片的烟田  又是一年烟叶采烤时。眼下,临沧市各地烤烟陆续成熟...
ETF主力榜 | 中证A500...        2025年7月17日,中证A500ETF富国(563220.SH)收涨1.07%,主力...
ETF主力榜 | 信用债ETF...        2025年7月17日,信用债ETF博时(159396.SZ)收涨0.12%,主力资金(...
中铁九局塞尔维亚项目部再获“安... 来源:环球网 在7月15日塞尔维亚紫金矿业有限公司的安全先进颁奖大会上,中铁九局塞尔维亚项目部在12...
港股收盘 | 科技指数领跑主要... 财联社7月17日讯(编辑 胡家荣)港股三大指数表现不一。截至收盘,恒生指数跌0.08%,报24498...
“社保基数下限上调至5166元... (来源:银柿财经) 相关信息以官方发布为准,切勿信谣传谣。 ...