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

aligned_storage

Boost , Chapter 1. Boost.TypeTraits , Alphabetical Reference

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
template <std::size_t Size, std::size_t Align>
struct aligned_storage
{
   typedef see-below type;
};

type: a built-in or POD type with size Size and an alignment that is a multiple of Align.

Header: #include <boost/type_traits/aligned_storage.hpp> or #include <boost/type_traits.hpp>

На компиляторах GCC и Visual C++ (или компиляторах, совместимых с ними) мы поддерживаем запросы типов с выравниваниями, превышающими любые встроенные типы (до 128-битного выравнивания). Пользователи Visual C++ должны отметить, что такие «расширенные» типы не могут быть переданы в стек в качестве аргументов функции по значению.

[Important]Important

Пользователи Visual C++ должны знать, что MSVC имеет эластичное определение выравнивания, например, рассмотрим следующий код:

typedef boost::aligned_storage<8,8>::type align_t;
assert(boost::alignment_of<align_t>::value % 8 == 0);
align_t a;
assert(((std::uintptr_t)&a % 8) == 0);
char c = 0;
align_t a1;
assert(((std::uintptr_t)&a1 % 8) == 0);

В этом коде окончательное утверждение не сработает для 32-битной сборки, потому что переменная<a1>не выровнена на 8-байтовой границе. Если бы мы использовали внутренний MSVC<__alignof>вместо<alignment_of>или<std::aligned_storage>вместо<boost::aligned_storage>, результат не был бы иным. В MSVC требования к выравниванию / обещания действительно применяются только к переменным на куче, а не на стеке.

__declspec(align(8)) Мы бы разбили много существующего кода, который полагается на способность пройти такие типы через стек программы. .


PrevUpHomeNext

Статья aligned_storage раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Alphabetical Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:32:03/0.0054090023040771/1