内存对齐和char d[0], char *d

本文通过四个不同结构体的实例,详细探讨了在C语言中结构体成员的内存对齐方式及其对结构体大小的影响。展示了如何使用 offsetof 宏来获取成员偏移,并通过实际运行结果对比了默认对齐与指定对齐参数(-fpack-struct=2)的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 


 

 

[root@joy-desktop align-test]#gcc -o align_test align_test.c
[root@joy-desktop align-test]#./align_test
-------------struct aa------------------
size of aa is 12, offset of d=9, offst of c=8, c=c
pA->d[].len===23
d[ 0]=d, d[ 1]=e, d[ 2]=f, d[ 3]=g,
d[ 4]=h, d[ 5]=i, d[ 6]=j, d[ 7]=k,
d[ 8]=l, d[ 9]=m, d[10]=n, d[11]=o,
d[12]=p, d[13]=q, d[14]=r, d[15]=s,
d[16]=t, d[17]=u, d[18]=v, d[19]=w,
d[20]=x, d[21]=y, d[22]=z,
-------------struct bb------------------
size of bb is 12
-------------struct cc------------------
size of cc is 32, offset of d=9, offst of c=8, c=c
objC.d[]===23
d[ 0]=d, d[ 1]=e, d[ 2]=f, d[ 3]=g,
d[ 4]=h, d[ 5]=i, d[ 6]=j, d[ 7]=k,
d[ 8]=l, d[ 9]=m, d[10]=n, d[11]=o,
d[12]=p, d[13]=q, d[14]=r, d[15]=s,
d[16]=t, d[17]=u, d[18]=v, d[19]=w,
d[20]=x, d[21]=y, d[22]=z,
-------------struct dd------------------
size of dd is 16, offset of d=12, offst of c=8, c=c
pD->d[].len===20
d[ 0]=d, d[ 1]=e, d[ 2]=f, d[ 3]=g,
d[ 4]=h, d[ 5]=i, d[ 6]=j, d[ 7]=k,
d[ 8]=l, d[ 9]=m, d[10]=n, d[11]=o,
d[12]=p, d[13]=q, d[14]=r, d[15]=s,
d[16]=t, d[17]=u, d[18]=v, d[19]=w,

 



[root@joy-desktop align-test]#gcc -o align_test align_test.c -fpack-struct=2
[root@joy-desktop align-test]#./align_test
-------------struct aa------------------
size of aa is 10, offset of d=9, offst of c=8, c=c
pA->d[].len===21
d[ 0]=d, d[ 1]=e, d[ 2]=f, d[ 3]=g,
d[ 4]=h, d[ 5]=i, d[ 6]=j, d[ 7]=k,
d[ 8]=l, d[ 9]=m, d[10]=n, d[11]=o,
d[12]=p, d[13]=q, d[14]=r, d[15]=s,
d[16]=t, d[17]=u, d[18]=v, d[19]=w,
d[20]=x,
-------------struct bb------------------
size of bb is 10
-------------struct cc------------------
size of cc is 30, offset of d=9, offst of c=8, c=c
objC.d[]===21
d[ 0]=d, d[ 1]=e, d[ 2]=f, d[ 3]=g,
d[ 4]=h, d[ 5]=i, d[ 6]=j, d[ 7]=k,
d[ 8]=l, d[ 9]=m, d[10]=n, d[11]=o,
d[12]=p, d[13]=q, d[14]=r, d[15]=s,
d[16]=t, d[17]=u, d[18]=v, d[19]=w,
d[20]=x,
-------------struct dd------------------
size of dd is 14, offset of d=10, offst of c=8, c=c
pD->d[].len===20
d[ 0]=d, d[ 1]=e, d[ 2]=f, d[ 3]=g,
d[ 4]=h, d[ 5]=i, d[ 6]=j, d[ 7]=k,
d[ 8]=l, d[ 9]=m, d[10]=n, d[11]=o,
d[12]=p, d[13]=q, d[14]=r, d[15]=s,
d[16]=t, d[17]=u, d[18]=v, d[19]=w,

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值