C/C++语言字节对齐

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

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

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

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

posted @ 2023-07-02 17:35  sahara-随笔  阅读(24)  评论(0)    收藏  举报