Вот код, о котором идет речь
#include <stdio.h>
struct test {
unsigned char t;
unsigned short u;
unsigned char v;
};
int main ()
{
struct test * a = (void *) 0x1000;
printf("%x %p %p\n",
sizeof(struct test),
a + sizeof(struct test),
a - sizeof(struct test));
return 0;
}
sizeof (struct test) печатает 6, поэтому я бы ожидал , чтобы увидеть:
6 0xffa 0x1006
Вместо этого я получаю
6 0x1024 0xfdc
В прошлый раз, когда я проверял, 0x24 или 36 не было равно 6. Он даже не выровнен ни с чем, что я могу сказать.Я в полной растерянности.
Может кто-нибудь объяснить мне, почему я получаю эти значения?