Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么 sizeof 运算符在结构上使用时总是给出与结构实际用于存储数据的字节数不同的字节数(我所期望的)?
它并不总是这样做。这取决于编译器对结构的打包。打包取决于架构的对齐规则。
从这篇文章
这是因为结构对齐。结构对齐是指编译器将未使用的内存插入结构的能力,以便数据成员最佳对齐以获得更好的性能。当基本数据类型存储在其大小的倍数的字节地址时,许多处理器性能最佳。 可以通过将最大的数据类型放在结构的开头并将最小的数据类型放在结构的末尾来最小化结构的大小
这是因为结构对齐。结构对齐是指编译器将未使用的内存插入结构的能力,以便数据成员最佳对齐以获得更好的性能。当基本数据类型存储在其大小的倍数的字节地址时,许多处理器性能最佳。
可以通过将最大的数据类型放在结构的开头并将最小的数据类型放在结构的末尾来最小化结构的大小