位域的内存位置

Memory location of bit-fields

本文关键字:位置 内存 位域      更新时间:2023-10-16

2014年11月c++ 14标准工作草案:

§1.7 6

c ISO/IEC N4296[示例:一个结构体声明为

struct { 
    char a;
    int b:5, 
    c:11, 
    :0, 
    d:8; 
    struct {int ee:8;} e; 
} 

包含四个独立的内存位置:字段a和位字段d和e.ee分别是独立的内存位置,并且可以并发修改而不需要互相干扰。位域b和c在一起构成第四个内存位置。位域b和c不能可以同时修改,但b和a可以同时修改。- - -结束例]

我假设:0作为各种分隔符,这就是为什么d有一个单独的内存位置,而bc没有。然而,我不明白

是什么意思

组成第四个内存位置

bcunion吗?例如,相当于

union {
    int b:5;
    int c:11;
};

不,它们不像在union示例中那样共享任何位。

它们只是考虑内存位置的一个单元。

换句话说,以下是您的示例中的位(可能)

AAAAAAAA BBBBBCCCCCCCCCCC DDDDDDDD EEEEEEEE (ee sharing e)

空格用来显示内存位置,不占用内存空间