c++11之第8章

本文深入探讨C++中对齐机制的各个方面,包括对齐支持的定义、填充数据的概念、对齐值的作用、alignof操作符的使用、类型定义的重要性、alignas描述符的应用、C++11对对齐的支持、std::align函数的功能、以及aligned_storage和aligned_union的介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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))即可为函数、变量和类型定义设定一些额外信息,已便编译器可以进行错误检查和性能优化等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值