作者yoco315 (眠月)
看板C_and_CPP
标题[问题] struct alignment 的问题
时间Thu May 14 01:43:46 2009
小红帽 64 bit
gcc 3.4
struct A { struct B { struct C {
int a ; double a ; float a ;
int b ; double b ; float b ;
int c ; float c ; float c ;
} ; } ; } ;
sizeof : 12
24 12
想不透为什麽 struct B 会是 24 阿~~~
不是应该 8 + 8 + 4 = 20 吗 O_Q???
--
To iterate is human, to recurse, divine.
递回只应天上有, 凡人该当用回圈. L. Peter Deutsch
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.109.211
1F:→ legnaleurc:因为double是8byte的block吧,float就被padding了 05/14 01:54
2F:推 Chevelle:long double? 05/14 03:54
3F:→ yoco315:这个我困惑了.. double 8byte 没必要去 padding float 阿 05/14 04:39
4F:推 chrisdar:padding 会补到最大内建型别大小的整数倍 05/14 09:00
5F:→ chrisdar: ^结构内用到的 05/14 09:01
6F:推 VictorTom:小弟我记得应该padding到自己这个member的倍数address就 05/14 09:04
7F:→ VictorTom:好了啊@_@" 跟y大有同样的疑惑....Orz 05/14 09:04
8F:推 VictorTom:雄雄想到, 这样也做padding, 不会是为了开array时还是都 05/14 09:17
9F:→ VictorTom:有alignment吧?? 05/14 09:17
10F:→ VictorTom: 该不会 05/14 09:18
11F:→ VictorTom:所以自然就形成了c大所说的结果这样@_@" 05/14 09:19
12F:推 chrisdar: 我也是这麽认为的 05/14 09:19
13F:→ yoco315:ㄟ~~~!有道理耶!XD 05/14 19:01