Я занимаюсь программированием на некоторых мобильных широкополосных машинах, и я столкнулся с странной вещью, которую не могу объяснить, исследуя ошибку сегментации на основе следующего кода:Разница в размере структуры между ppu и spu
struct SPU_DATA
{
unsigned char *i;
unsigned char *o;
unsigned int width;
unsigned int height;
unsigned int bpp;
char padding[108];
} __attribute__((aligned(128)));
Когда я выводим размер этой структуры на консоль на ppu, выводится значение 256. Однако, когда я вывожу размер на spu, он выдается как 128, что и ожидается.
Я не могу найти повод для этого. Есть идеи?
Возможно, ints и указатели 64 бит на ppu? – Kenney
Интересный момент, который я не считал –
Он также может быть 1013 байт или любое другое значение. Нет никаких типов гарантии, кроме «char», которые имеют определенный размер или нет прокладки. Если вы полагаетесь на определенный макет, (de) сериализуете из/в 'char []'. Все остальное - рецепт неопределенного поведения. И 'char' тоже не обязательно 8 бит. – Olaf