确实是对齐的缘故。
“变量分配的内存是从下到上”这话听起来有点奇怪。。。
实际做法按照定义的顺序分配地址,地址是从上往下分配的。
所以首先设置好c的地址。
接着,a的地址必须是4的整数倍,从c的地址0xef往下,第一个4的整数倍是0xec,但是它们之间只有3个空位,所以没法用。
于是a必须再往下找下一个4的整数倍,即0xe8。
贴另一段代码
int main(){
char c='A';
char d='A';
char e='A';
char f='A';
int a=10;
printf("a=%p\n",&a);
printf("c=%p\n",&c);
printf("d=%p\n",&d);
printf("e=%p\n",&e);
printf("f=%p\n",&f);
}
f和a的距离就是4了。 |