我得到以下代码的意外结果。
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 字节。