场景
1.在使用一些相关原子操作的函数或指令时, 一般都需要对操作的变量地址进行对齐, 4,8,16…字节对齐.
2.在没有引入C++11的alignas指示符之前, 一般都是使用
__declspec(align(4)) int i; // Windows
alignas(4) int j; // C++
或定义一些存储空间进行计算转换, 参考数据地址对齐. 不同的是前者是编译时刻计算出地址,后者是运行时刻计算出内存对齐地址; 麻烦的是VS2010 并不是完整支持C++11对齐特性.
说明
1.C++11 引入了很多地址对齐相关的操作符, 函数, 模板。
alignas 说明符
1.同Windows的 __declspec(align(4
本文介绍了C++11中关于地址对齐的特性,包括alignas说明符、alignof操作符、std::align函数和std::aligned_storage类模板。通过这些工具,可以在编译和运行时实现变量的对齐,特别是在使用原子操作时显得尤为重要。VS2010对这些特性的支持有限。
订阅专栏 解锁全文
643

被折叠的 条评论
为什么被折叠?



