[应用相关] 高效使用 union 的策略

[复制链接]
788|2
 楼主| 米多0036 发表于 2024-6-12 08:42 | 显示全部楼层 |阅读模式
高效使用 union 的策略
共享内存的成员:
如果你的程序在某个时间点只需要使用一种数据类型,可以用 union 来减少内存消耗。例如,一个通信协议的数据包可能在不同的时间只存储一种类型的数据。
c
复制代码
typedef union {
    uint8_t raw[32];
    struct {
        uint16_t header;
        uint8_t payload[28];
        uint16_t checksum;
    } structuredData;
} Packet;
位域与 union 结合:
位域可以与 union 结合使用,以便在单个位或位段层面上优化内存使用。这在处理标志或多个状态位时特别有用。
c
复制代码
typedef union {
    struct {
        uint16_t flag1 : 1;
        uint16_t flag2 : 1;
        uint16_t flag3 : 1;
        uint16_t reserved : 13;
    } bits;
    uint16_t allFlags;
} Flags;
不同数据视图:
使用 union 来表示同一数据的不同视图。例如,将数据包视为字节数组或特定格式的数据结构。
c
复制代码
typedef union {
    struct {
        uint16_t x;
        uint16_t y;
    } coordinates;
    uint32_t point;
} PointUnion;

rzjvv 发表于 2024-8-31 17:40 | 显示全部楼层
当你的程序在某个时间点只需要使用一种数据类型时,union 可以显著减少内存消耗。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

138

主题

1431

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部