вторник, 7 июля 2009 г.

Structure Alignment Show

Вот пошаговое изменение памяти.
Наблюдаем за выравниванием в структурах.
struct abc
{
unsigned char a;
unsigned char b;
unsigned int c;
};

////////////////////////////////////////////////////////////
// Операторы // Память структуры val //
////////////////////////////////////////////////////////////
// // cc cc cc cc cc cc cc cc //
// abc val = {0,0,0}; // 00 00 cc cc 00 00 00 00 //
// val.a = 0xAA; // aa 00 cc cc 00 00 00 00 //
// val.b = 0xBB; // aa bb cc cc 00 00 00 00 //
// val.c = 0xCC; // aa bb cc cc cc 00 00 00 //
// (int&)val.b += 0x11 << 24; // aa bb cc cc dd 00 00 00 //
////////////////////////////////////////////////////////////
// printf ("Output: %x %x %x", val.a, val.b, val.c); //
////////////////////////////////////////////////////////////
// Output: aa bb dd

Комментариев нет: