从品牌网站建设到网络营销策划,从策略到执行的一站式服务
今天就跟大家聊聊有关c++中的结构体内存怎么对齐,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、虚拟空间、营销软件、网站建设、福鼎网站维护、网站推广。各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数, 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间 同时按照上面的对齐方式调整位置。 空缺的字节自动填充, 同时为了确保结构的大小为结构的字节边界数(即该结构中占用较大的空间的类型的字节数)的倍数,所以在为最后一个成员变量申请空间后 还会根据需要自动填充空缺的字节;
#includeusing namespace std; #pragma pack(8) struct Test1 { char a; //0 - 1 short b;//2 - 3 int c;// 4 - 7 float d;//8 - 11 double e;//12 - 23 }; #pragma pack(4) struct Test2 { char a; //0 - 1 short b;//2 - 3 int c;// 4 - 7 float d;//8 - 11 double e;//12 - 19 }; #pragma pack(8) struct Test3 { double e;//0-7 float d;//8-13 short b;//14-15 int c;// 16-19 char a; //20-23 }; int main() { std::cout << "size test1= " << sizeof(Test1) << std::endl; std::cout << "size test2= " << sizeof(Test2) << std::endl; std::cout << "size test3= " << sizeof(Test3) << std::endl; return 0; }
1)第一个成员在与结构体偏移量为0的地址处。
2)其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。
VS中默认的对齐数为8,gcc中的对齐数为4
3)结构体总大小为:较大对齐数(所有变量类型较大者与默认对齐参数取最小)的整数倍。
4)如果嵌套了结构体的情况,嵌套的结构体对齐到自己的较大对齐数的整数倍处,结构体的整体大小就是所有较大对齐数(含嵌套结构体的对齐数)的整数倍。
看完上述内容,你们对c++中的结构体内存怎么对齐有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图