用指针联盟

时间:2014-12-17 21:46:09

标签: c++ unions

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

union{
    UCHAR *_rawData;
    RGB *_RGBData;
};
typedef struct RGB
{
    UCHAR red;
    UCHAR green;
    UCHAR blue;
}RGB;

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

_rawData = new UHCAR[126];
_RGBData = new _RGBData[42]; //3 times lower than rawData

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

1 个答案:

答案 0 :(得分:8)

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

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