Re[4]: Проблема с sizeof
От: Кодт Россия  
Дата: 12.04.02 06:42
Оценка: 36 (4)
Здравствуйте Micker, Вы писали:

S>>Работает , но непонял почему , объясни для тех кто на бронепоезде и с первого раза не въежжает.


struct s { BYTE b1; BYTE b2; DWORD dw3; BYTE b4; };

+-------------------+-------------------+-------------------+
+----+----+----+----+----+----+----+----+----+----+----+----+
| b1 | b2 |    |    | <------dw3------> | b4 |    |    |    |  -- sizeof(s)==12
+----+----+----+----+----+----+----+----+----+----+----+----+
          |-------->                         |------------->
                  выравнивание до границы слова

struct p { BYTE b1; BYTE b2; BYTE b3; DWORD dw4; };

+-------------------+-------------------+
+----+----+----+----+----+----+----+----+
| b1 | b2 | b3 |    | <------dw4------> |  -- sizeof(p)==8
+----+----+----+----+----+----+----+----+
               |--->
               выравнивание до границы слова

pragma pack(push,1);

+-------------------+-------------------+
+----+----+----+----+----+----+----+
| b1 | b2 | <------dw3------> | b4 |    -- sizeof(s)==7
+----+----+----+----+----+----+----+
+----+----+----+----+----+----+----+
| b1 | b2 | b3 | <------dw4------> |    -- sizeof(p)==7
+----+----+----+----+----+----+----+
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.