You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式系统中带双变量的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:02:36