61局部存储分配 例在 SPARO/ Solaris工作站上下面两个结构 体的size分别是24和16,为什么不一样? typedef struct at ty pede struct bR char cl char cl long i char c 2 char c2 long double f double fe a }b; 对齐:char:1,long:4, double:8
6.1 局部存储分配 • 例 在SPARC/Solaris工作站上下面两个结构 体的size分别是24和16,为什么不一样? typedef struct _a{ typedef struct _b{ char c1; char c1; long i; char c2; char c2; long i; double f; double f; }a; }b; 对齐:char : 1, long : 4, double : 8
61局部存储分配 例在 SPARO/ Solaris工作站上下面两个结构 体的size分别是24和16,为什么不一样? typedef struct at ty pede struct bR char cl: o charal: o long i; 4 char c2; 1 char c2 8 long double f: 16 double f 8 a }b; 对齐:char:1,long:4, double:8
6.1 局部存储分配 • 例 在SPARC/Solaris工作站上下面两个结构 体的size分别是24和16,为什么不一样? typedef struct _a{ typedef struct _b{ char c1; 0 char c1; 0 long i; 4 char c2; 1 char c2; 8 long i; 4 double f; 16 double f; 8 }a; }b; 对齐:char : 1, long : 4, double : 8
61局部存储分配 例在X86inux机器的结果和 SPARO/ Solaris 工作站不一样,是20和6。 typedef struct at ty pede struct bR char cl: o charal: o long i; 4 char c2; 1 char c2 8 long double f: 12 double f 8 a }b; 对齐:char:1,long:4, double:4
6.1 局部存储分配 • 例 在X86/Linux机器的结果和SPARC/Solaris 工作站不一样,是20和16。 typedef struct _a{ typedef struct _b{ char c1; 0 char c1; 0 long i; 4 char c2; 1 char c2; 8 long i; 4 double f; 12 double f; 8 }a; }b; 对齐:char : 1, long : 4, double : 4
6.1局部存储分配 615程序块 本身含有局部变量声明的语句 可以嵌套 最接近的嵌套作用域规则 °并列程序块不会同时活跃 并列程序块的变量可以重叠分配
6.1 局部存储分配 6.1.5 程序块 • 本身含有局部变量声明的语句 • 可以嵌套 • 最接近的嵌套作用域规则 • 并列程序块不会同时活跃 • 并列程序块的变量可以重叠分配
61局部存储分配 main0/*例* /* begin of bo x/ int a=0: int b=0 / begin of B,*/ int b=1: /* begin of B2*/ int a=2 / end of b * /* begin of B3*/ int b=3 / end of b * / end of b, * / end of b */
6.1 局部存储分配 main() / 例 / { / begin of B0 / int a = 0; int b = 0; { / begin of B1 / int b = 1; { / begin of B2 / int a = 2; } / end of B2 / { / begin of B3 / int b = 3; } / end of B3 / } / end of B1 / } / end of B0 /