.data 和 .bss 的对齐有时是 4 个字节,有时是 32 个字节。示例 1:根据下面输出中的最后一列 bss 和数据的对齐方式为 32 字节
bash-3.00$ readelf --sections libmodel.so
There are 39 section headers, starting at offset 0x1908a63c:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
...
[25] .data PROGBITS 01e221e0 1e211e0 26ca54 00 WA 0 0 32
[26] .bss NOBITS 0208ec40 208dc34 374178 00 WA 0 0 32
...
示例 2:根据以下输出对齐 os .data 和 .bss 为 4 个字节
bash-3.00$ readelf --sections ./a.out
There are 28 section headers, starting at offset 0x78c:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
...
[22] .data PROGBITS 0804956c 00056c 000034 00 WA 0 0 4
[23] .bss NOBITS 080495a0 0005a0 000004 00 WA 0 0 4
...
什么决定了.bss 和.data 的对齐方式?为什么有时是 4 个字节,有时是 32 个字节?