用指针联盟

Que*_*est 4 c++ unions

我有一个带有2个不同数据类型指针的联合:

union{
    UCHAR *_rawData;
    RGB *_RGBData;
};
typedef struct RGB
{
    UCHAR red;
    UCHAR green;
    UCHAR blue;
}RGB;
Run Code Online (Sandbox Code Playgroud)

稍后在代码中......

_rawData = new UHCAR[126];
_RGBData = new _RGBData[42]; //3 times lower than rawData
Run Code Online (Sandbox Code Playgroud)

所以我的问题是......这样的联盟安全吗?从理论上讲,这两个变量都使用126个字节,所以应该可以,但我不确定,所以我在这里问

Chr*_*phe 8

联合本身是有效的,但只有一个联盟成员可以随时活动:

  • 因此,在代码中稍后执行两次初始化是明确错误的:第一个指针将丢失.
  • 您必须找到一种方法来确定哪个成员是活动的.