Получение неожиданного результата с помощью 'sizeof (union.variable)' -> Цель C - PullRequest
0 голосов
/ 19 мая 2011

Я получаю неожиданный результат для приведенного ниже кода.

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

1 Ответ

1 голос
/ 19 мая 2011

Это правильный вывод для этого кода.Ваш союз содержит массив 4138 int типов.Если вы запустили NSLog(@"%d",sizeof(int));, результат будет 4.4 * 4138 = 16552, поэтому массив из 4138 int s имеет длину 16552 байта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...