专栏名称: 程序人生
程序人生,不止一面。关注程序员生活,汇聚开发轶事,奉送各种福利。
今天看啥  ›  专栏  ›  程序人生

面试常考,项目易错,长文详解C/C++中的字节对齐

程序人生  · 公众号  · 程序员  · 2020-10-14 14:21
作者 | 李肖遥来源 | 技术让梦想更伟大(ID:TechDreamer)头图 |  CSDN 下载自东方IC引入主题,看代码我们先来看看以下程序//编译器:https://tool.lu/coderunner///来源:技术让梦想更伟大//作者:李肖遥#include using namespace std;struct st1 { char a ; int b ; short c ;};struct st2{ short c ; char a ; int b ;};int main(){ cout cout return 0 ;}编译的结果如下:问题来了,两个结构体的内容一样,只是换了个位置,为什么sizeof(st)的时候大小不一样呢?没错,这正是因为内存对齐的影响,导致的结果不同。对于我们大部分程序员来说,都不知道内存是怎么分布的。实际上因为这是编译器该干的活,编译器把程序中的每个数据单元安排在合适的位置上,导致了相同的变量,不同声明顺序的结构体大小的不同。 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照