Я получаю неожиданный результат для приведенного ниже кода.
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 байта.
int
NSLog(@"%d",sizeof(int));
4