char 1字节
int 4字节
long 4字节
short 2字节
signed char 1字节
unsigned char 1字节
unsigned long 4字节
unsigned short 2字节
float 4字节
double 8字节
结构体的所占字节数计算:
typedef struct
{ char ;
char ;
short ;
};charcharshort 类型的结构体占4字节内存。
┌───┬───┐
│ char│ char│2字节
└───┴───┘
┌───┬───┐
│ short │2字节
└───┴───┘
typedef struct
{
short;
char;
char;
}
Short char char 类型的结构体占4字节内存.
┌───┬───┐
│ short │2字节
└───┴───┘
┌───┬───┐
│ char│ char│2字节
└───┴───┘
typedef struct
{
char ;
short ;
char ;
}csc;
Char short char 类型的结构提占6字节内存,以short 做2字节对齐
┌───┬┄┄┄┐
│ char │ null │2字节
└───┴┄┄┄┘
┌───┬───┐
│ short │2字节
└───┴───┘
┌───┬┄┄┄┐
│ char │ null │2字节
└───┴┄┄┄┘
typedef struct
{
double ;
char ;
char ;
char ;
}
double char char char 类型的结构体占16字节内存
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ double │
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节
┌───┬───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│ char │ char │ char │ null │
└───┴───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
typedef struct
{
char ;
char ;
double ;
char ;
char ;
char ;
}
char char double char char 类型的结构体占24字节内存
8字节 使用2字节空余6字节
┌───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│ char │ char │ null │
└───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ double │
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节 使用3字节空余5字节
┌───┬───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│ char │ char │ char │ null │
└───┴───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
typedef struct
{
char ;
int ;
double;
char ;
char ;
char ;
int ;
}
char int double char char char int 类型的结构体占用24字节内存
8字节 使用2字节空余6字节
┌───┬┄┄┄┬┄┄┄┬┄┄┄┬───┬───┬───┬───┐
│ char │ null │ int │
└───┴┄┄┄┴┄┄┄┴┄┄┄┴───┴───┴───┴───┘
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ double │
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节 使用3字节空余5字节
┌───┬───┬───┬┄┄┄┬───┬───┬───┬───┐
│ char │ char │ char │ null │ int │
└───┴───┴───┴┄┄┄┴───┴───┴───┴───┘
typedef struct
{
char ;
short ;
int ;
double ;
char ;
int ;
float ;
}
char short int double char int float 类型的结构体占用32字节内存
8字节 使用2字节空余6字节
┌───┬┄┄┄┬───┬───┬───┬───┬───┬───┐
│ char │ null │ short │ int │
└───┴┄┄┄┴───┴───┴───┴───┴───┴───┘
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ double │
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节 使用3字节空余5字节
┌───┬┄┄┄┬┄┄┄┬┄┄┄┬───┬───┬───┬───┐
│ char │ null │ int │
└───┴┄┄┄┴┄┄┄┴┄┄┄┴───┴───┴───┴───┘
8字节 使用3字节空余5字节
┌───┬───┬───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│ float │ null │
└───┴───┴───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
对上一个结构体做位置变更,查看内存占用情况
typedef struct
{
char ;
char ;
short ;
int ;
int ;
float ;
double ;
}
经过位置变更,占用内存为24字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ char│ char│ short │ int │
└───┴───┴───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ int │ float │
└───┴───┴───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ double │
└───┴───┴───┴───┴───┴───┴───┴───┘
typedef struct
{
short ;
char ;
char ;
char ;
int ;
}
short char char char int 类型的结构体占用12字节内存
4字节
┌───┬───┬───┬───┐
│ short │ char │ char│
└───┴───┴───┴───┘
4字节 使用1字节剩余3字节
┌───┬┄┄┄┬┄┄┄┬┄┄┄┐
│ char │ null │
└───┴┄┄┄┴┄┄┄┴┄┄┄┘
4字节
┌───┬───┬───┬───┐
│ int │
└───┴───┴───┴───┘