1.struct结构体大小的计算
我已自己的代码为例:
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned int __u32;
typedef unsigned __int64 __u64;
typedef __u8 f8_u8;
typedef __u16 f8_u16;
typedef __u32 f8_u32;
typedef __u64 f8_u64;
typedef __u64 f8_uuid;
struct mem_addr_t {
f8_u16 addr;
f8_u8 section;
f8_u8 padding_0;
}PACKED;
struct var_def_t {
f8_uuid uuid;//f8_vm
struct mem_addr_t addr;//f8_binary
};
现在我们要计算var_def_t结构体的大小:此结构体包含两个成员变量uuid(无符号64位整型,占8个字节)和 addr(mem_addr_t结构体类型)。
那下面问题又来了,mem_addr_t结构体类型占多大空间呢:
struct mem_addr_t {
f8_u16 addr; //无符号短整型,占两个字节
f8_u8 section; //无符号char型,占一个字节
f8_u8 padding_0; //无符号char型,占一个字节
}PACKED;
由上可知,mem_addr_t类型占四个字节(注意这不是简单的累加),我们通过sizeof(mem_addr_t)得到的字节数也同样为4。
这会我们在反过头来计算看var_def_t结构体的大小:
struct var_def_