字节序
小头:将低字节作为开始,存储在开始地址
大头:将高字节作为开始,存储在开始地址
存储的基本单位是字节,所以多字节类型在存储时,会按照一个顺序拆分成一个个字节,然后存储。
例:
存储0x1234
地址 0x01 0x02
小头 34 12
大头 12 34
字节对齐
1、规则:
1-指定对齐字节和自身中取最小的。
2-结构体以结构体中的最大成员的字节和指定对齐字节中最小的为准
2、#pragma pack (1)
3、计算每个开始地址:((A+3)/B)*B (起始地址A,对齐字节B)
程序在内存中的分布:
----------------------------------------------------------------------------------------
|低地址》.text |.data| .bss | heap(堆)--> unused <--stack(栈) | env 《高地址 |
----------------------------------------------------------------------------------------
.text 部分是编译后程序的主体,也就是程序的机器指令。
.data 和 .bss 保存了程序的全局变量,静态成员等,.data保存有初始化的全局变量,.bss保存只有声明没有初始化的全局变量。