Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Vocabulary

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 3. Boost.Align

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

[basic.align]

Типы объектов имеюттребования выравнивания, которые накладывают ограничения на адреса, по которым может быть выделен объект такого типа.Выравнивание- это целое значение, определяемое реализацией, представляющее количество байтов между последовательными адресами, по которым может быть распределен данный объект. Тип объекта накладывает требование выравнивания на каждый объект этого типа; более строгое выравнивание может быть запрошено с использованием спецификатора выравнивания.

фундаментальное выравниваниепредставлено выравниванием, меньшим или равным наибольшему выравниванию, поддерживаемому реализацией во всех контекстах, которое равно<alignof(std::max_align_t)>. Выравнивание, необходимое для типа, может быть различным, когда он используется в качестве типа полного объекта и когда он используется в качестве типа подобъекта.

[Tip] Tip
struct B { long double d; };
struct D : virtual B { char c; };

Когда<D>является типом полного объекта, он будет иметь подобъект типа<B>, поэтому он должен быть соответствующим образом выровнен для<long double>. Если<D>появляется как подобъект другого объекта, который также имеет<B>как виртуальный базовый класс,<B>подобъект может быть частью другого подобъекта, что снижает требования к выравниванию на<D>подобъекте.

Результат оператора<alignof>отражает требование к выравниванию типа в случае полного объекта.

расширенное выравниваниепредставлено выравниванием, превышающим<alignof(std::max_align_t)>. Определено, поддерживаются ли какие-либо расширенные выравнивания и контексты, в которых они поддерживаются. Тип, требующий расширенного выравнивания, являетсясверхвыровненным типом.

[Note] Note

Каждый выровненный тип представляет собой или содержит тип класса, к которому применяется расширенное выравнивание (возможно, через нестатический элемент данных).

Выравнивания представлены в виде значений типа<std::size_t>. Действительные выравнивания включают только те значения, которые возвращаются выражением<alignof>для основных типов плюс дополнительный набор значений, определяемый реализацией, который может быть пустым. Каждое значение выравнивания должно быть неотрицательной интегральной силой двух.

Уравнивания имеют порядок отболее слабогодоболее сильногоилиболее строгоговыравнивания. Более строгие выравнивания имеют большие значения выравнивания. Адрес, который удовлетворяет требованию выравнивания, также удовлетворяет любому более слабому действительному требованию выравнивания.

Требование выравнивания полного типа может быть запрошено с использованием выражения<alignof>. Кроме того, типы<char>,<signed char>и<unsigned char>должны иметь самое слабое требование выравнивания.

[Note] Note

Это позволяет использовать типы символов в качестве основного типа для выровненной области памяти.

Сравнение выравниваний имеет смысл и дает очевидные результаты:

  • Два выравнивания равны, когда их числовые значения равны.
  • Два выравнивания различны, когда их числовые значения не равны.
  • Когда выравнивание больше, чем другое, оно представляет собой более строгое выравнивание.
[Note] Note

Функция выравнивания указателей времени выполнения может использоваться для получения выровненного указателя в буфере; шаблоны выровненного хранения в библиотеке могут использоваться для получения выровненного хранилища.

Если запрос на конкретное расширенное выравнивание в конкретном контексте не поддерживается реализацией, программа плохо сформирована. Кроме того, запрос на распределение времени выполнения динамического хранилища, для которого запрашиваемое выравнивание не может быть выполнено, рассматривается как отказ распределения.


PrevUpHomeNext

Статья Vocabulary раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 3. Boost.Align может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 3. Boost.Align ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:05:16/0.0069370269775391/0