Класс упаковки и выравнивания - PullRequest
1 голос
/ 05 мая 2011

Каково выравнивание для вызова #pragma pack() без аргумента в компиляторе GCC?

Кроме того, я часто вижу, что когда мы используем placement new при создании объекта, class часто упаковывается.В чем причина этого?Нужно ли это делать?

1 Ответ

2 голосов
/ 05 мая 2011

для первой части, вы могли бы безрассудно использовать Google: http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html

во-вторых, могут быть случаи, когда вам нужно контролировать двоичный формат вашего класса. вам может потребоваться управлять объемом памяти и реальными двоичными смещениями структур данных:

struct
{
  char c;
  int i;
};

может использовать 8 байтов памяти или 5 байтов памяти, в зависимости от типа машины и используемого пакета прагмы.

...