C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Размер структуры можно изменить, если поиграться с порядком объявления членов структуры / mini-FAQ / Visual C++

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

Например, у нас есть простая структура:

struct A
{
 bool a;
 int b;
 bool c;
}; // sizeof (A) == 12

На моей машине, sizeof (A) равняется 12. Данный результат немного удивляет, так как в сумме переменные данной структуры занимают всего 6 байт: 1+4+1 байт. Откуда добавились ещё шесть байт? Оказывается, компилятор после каждой переменной bool добавляет ещё три байта, таким образом делая выравнивание на границу слова. Однако можно уменьшить размер структуры A путём изменения порядка объявления переменных следующим образом:

struct B
{
 bool a;
 bool c;
 int b;
}; // sizeof (B) == 8

Теперь компилятор добавит только два байта после переменной c. Так как b занимает четыре байта, то она и бес того удовлетворят выравниванию и компилятору нет необходимости добавлять к ней дополнительные байты.