嵌入式系统中带双变量的C语言联合体与结构体内存占用咨询
嵌入式RAM优化:联合体与结构体多变量的内存占用确认
一、联合体示例的内存占用
首先看你的联合体代码:
union POR_Vectors { unsigned int Address; unsigned char Bytes[2]; }BL_POR_Vector, APP_POR_Vector;
- 单个
union POR_Vectors实例的大小由其最大成员决定:unsigned int(2字节)和unsigned char Bytes[2](2字节),所以单个实例占用2字节RAM。 - 你定义了两个独立的联合体实例
BL_POR_Vector和APP_POR_Vector,因此总RAM占用为 2字节 × 2 = 4字节。你的假设(每个变量名对应2个内存位置)是正确的。
二、结构体示例的内存占用
再看结构体代码:
struct FFC0_Flash { char BL_App_First_Run; char APP_Says_Load_New_App; }*Information, Ram_Information;
- 单个
struct FFC0_Flash实例的大小:两个char成员各占1字节,无额外对齐的话总大小为2字节。 - 这里定义了两个实体:
Ram_Information:结构体的实际实例,占用2字节RAM;Information:指向该结构体类型的指针,在8位/16位地址空间的MCU中,指针通常占用2字节RAM。
- 因此结构体相关的总RAM占用为 2字节(实例) + 2字节(指针)= 4字节。你的假设同样正确。
内容的提问来源于stack exchange,提问作者Gerald Eberhardt
相关产品推荐
相关产品推荐

