1 预备知识
1.1 变量所占内存
(1)32位操作系统:
char : 1 int :4 short : 2 unsigned int : 4 long : 4 unsigned long : 4 long long : 8 float : 4 double : 8 指针 : 4
(2)64位操作系统
char : 1 int :4 short : 2 unsigned int : 4 long : 8 unsigned long : 8 long long : 8 float : 4 double : 8 指针 : 8
1.2 内存对齐
例1:
int main(void){
char a;
int b;
int c;
printf("a=%d\n",&a);
printf("b=%d\n",&b);
printf("c=%d\n",&c);
}
分析:char 所占1字节,int 所占4字节,假设起始内存为00000,那么a的起始地址为00000,b的起始地址00001,c的起始地址00005,总体所占内存大小为9字节。
通过编译(64b),可以看到a 的起始地址为6487583&