与指针联合

Union with pointers

本文关键字:指针      更新时间:2023-10-16

我有一个联合,有 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 字节,所以应该没问题,但我不确定,所以我在这里问

工会本身是有效的,但任何时候只有一个工会成员可以处于活动状态:

  • 因此,在代码后面执行两次初始化是绝对错误的:第一个指针将丢失。
  • 您必须确定哪个成员处于活动状态。