使用"sizeof(union.variable)"->目标 C 获得意外结果



我得到以下代码的意外结果。

union
{
    int aBuf[RMH_MAX_UNENCODED_LENGTH+sizeof(MSG_INFO)]; //4070+68=4138
}sUnion;
NSLog(@"%d",sizeof(sUnion.aBuf));//printing as 16552 and not 4138

这是此代码的正确输出。联合包含 4138 种int类型的数组。如果运行NSLog(@"%d",sizeof(int));,则输出将为4。4*4138=16552,因此 4138 int s 的数组长度为 16552 字节。

最新更新