C/C++语言字节对齐

C/C++编译器的缺省字节对齐方式为自然对界。

  • 即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。
    在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一个成员的地址和整个结构的地址相同。  
    编译器缺省的结构成员自然对界条件为“N字节对齐”,N即该成员数据类型的长度。如int型成员的自然对界条件为4字节对齐,而double类型的结构成员的自然对界条件为8字节对齐。
    若该成员的起始偏移不位于该成员的“默认自然对界条件”上,则在前一个成员后面添加适当个数的空字节。  
    编译器缺省的结构整体的自然对界条件为:该结构所有成员中要求的最大自然对界条件。若结构体各成员长度之和不为“结构整体自然对界条件的整数倍”,则在最后一个成员后填充空字节

class如果有虚函数,在头部增加一个虚函数指针。

什么是字节对齐,为什么要对齐? - 知乎
sizeof详解、类的大小、内存对齐、位域_内存的理解sizeof,包括结构体,指针,数组等,其中结构体注意字节对齐_GNG的博客-CSDN博客
浅析C++类的内存布局

posted @   sahara-随笔  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示