Boost 学习之Align-Rationale部分

Rationale

动态内存分配

C++11 为类类型添加了动态内存对齐的能力。不幸的是。::运算符,new 内存分配函数,new表达式,默认的分配器,std::allocator并不支持为超出内存对齐的数据动态分配内存。该库提供了分配函数,分配器,分配器适配器,以及删除器,他们都是能感知对齐的。

问题 解法

::operatornew(std::size_t,const std::no_throw_t&)

aligned_alloc(std::size_t,std::size_t)

::operatordelete(void*)

aligned_free(void*)

std::allocator<T>

aligned_allocator<T>

Allocator

aligned_allocator_adaptor<Allocator>

std::default_delete<T>

aligned_delete



Table 2.2. Boost.Align solutions
对齐函数

C++11在标准库中提供了std::align 来对齐一个选定的值。然而,一些C++11 库扩展并提供对此的支持比如 (为gcc 4.8.0扩展的lib stdc++),同时还有一些库对此的扩展并不正确(比如msvc 11.0中的dinkumware库)。本库鉴于上述原因以及C++03编辑器提供了对std::align的支持。


对齐特征
C++11 在标准库提供了std::alignment_of特征来对一种类型发送对齐要求。然而,一些C++11标准库的供应商并不以符合标准的方式扩展它,
比如说对于array类型(clang3.4 之前的libc++ 库)。其他的供应商的实现反映出对一些特定类型产生了不正确的值,比如说msvc4.0 中指针指向的一些成员。本库鉴于上述原因以及为c++3.0编译器提供了std::alignment_of的扩展。

对齐提示
分配对齐的内存对于保证能够生成优秀的代码在一些情况下是不够的。开发者使用不同的编译器内部函数来通知编译器对一个内存块有一个给定的内存对齐特性。该库提供了一个宏结合适当的内部函数对编译器抽象该功能。


对齐测试

该库提供了一个函数来测试一个指定的值是否对齐。在断言内存是否对齐时通常很有用。


原文链接:http://www.boost.org/doc/libs/1_60_0/doc/html/align/rationale.html



你可能感兴趣的:(C++,boost,对齐,align)