新人 拙见
在linux中以四个字节为开辟单元,即不足四个 开辟四个,多四个的 继续开辟四个 多出的部分 放进另一个四个字节中,5 R! S! q! N* |9 c& L1 V1 [
linux中:
" k) k x, c5 A" i$ r& estruct
" G( D( @4 L n{ 4 X; K( d7 n$ o& q, z7 \* y5 T
char a; //开辟第一个四字节, a占有一个 余三个,留下一个存, int为四个字节 放不下,所以从新开辟四个字节, 因此到此为4个字节.: W f) c" k* p$ e8 U5 R9 x+ K
int b; //32位机器中 int等同与long int ,所以开辟四个, 到此为4+4=8个字节.
- i9 S, P* a$ s/ Q% @ double c;//开辟两个四字节,所以到此为8+8=16
& o3 c+ k7 I# L4 o4 c char d; //开辟四个 ,16+4=20.+ v% ]1 G7 l! z- C$ A+ s
}' b" u" G4 U, i; \/ j# Q5 Q
最后 linux为20字节
0 `: q' a% s! i2 z: W9 y1 u/ a
2 p+ J) Q2 R+ L8 h/ m/ R$ ]window中是以最大单元为开辟单位,即系统先检查结构中最大单位 为double 8个字节,所以以八个字节为单位.
: `' ` C7 V, y5 o9 M5 a9 |' @* G" R' l
struct
4 b. a! P9 O( C. F6 w, S6 V{ / f: ~! i/ U' d$ w8 w
char a; //开辟八个字节,a用去一个,继续存放b,c存不下 所以到此为8个字节;8 i' }6 O6 v/ v) i3 }! I
int b; // 到此为8个
% f! k. l( y6 _ z* I" g double c; //开辟新空间 到此为8+8=16;
, K8 B, n% I3 u7 t$ l' H char d; //上一单元C放满 开辟新八个单元, 最后字节为 16+8=24;* d4 r* Q* t, }* w0 l
}
6 n2 s2 s' r/ \5 [5 X$ b3 i$ r最后windows为24字节