1、对齐支持,在我们平台的定义上,c/c++的int类型要求对齐到4字节。
2、因为对齐而造成的内存留空称为填充数据。
3、对齐方式默认是一个整数,表示的是一个类型的对象存放的内存地址应满足的条件。简称对齐值。
4、操作符alignof的操作数表示一个定义完整的自定义类型或者内置类型或者变量,返回值是一个std::size_t类型的整型常量。
5、类型定义不完整是无法编译通过的。
6、alignas既可以接收常量表达式,也可以接收类型作为参数。
7、c++11标准之前,可以使用编译器扩展来描述对齐方式,GNU格式的_attribute_((__aligned(8)))就是一个广泛被接收的版本。
8、对齐描述符可以作用于各种数据,可以是修饰变量、类的数据成员等,而位域以及用register声明的变量、函数则不可以。
9、固定容量的泛型数组有时可能遇到因为对齐不佳而导致的性能损失(甚至程序错误),而引入alignas能够解决这些移植性的困难,这可能也是c++标准委员会决定不再“隐藏”变量的对齐方式的原因之一。
10、c++11对于对齐的支持不限于alignof操作符及alignas描述符。在STL还内建了std::align函数来动态根据指定的对齐方式调整数据块的位置。gcc4.8.1还未支持。
11、c++11还提供aligned_storage、aligned_union 2个函数使用
12、通用属性,属性通过GNU的关键字__attribute__来声明的。__attribute__((attribute-kust))即可为函数、变量和类型定义设定一些额外信息,已便编译器可以进行错误检查和性能优化等。