如何检查该类型的类型指针是正确对齐的
How do I check a typed pointer is properly aligned for that type?
假设我有一个模板函数,该功能涉及指针尚未为T
的未知类型。现在,如果类型T
恰好是64位平台上的void*
,则必须对其进行8个字样,但是如果T
恰好是char
,则必须对1字节对齐,并且T
恰好是一类,那么其对齐要求将取决于在其成员变量上。
所有这些都可以在纸上计算,但是如何使编译器产生给定类型T
的对齐要求?
是否可以在编译时间找到给定类型的对齐要求?
在C 11中,您可以使用对齐和Alignas做出断言并提供对齐的要求。还要查看STD ::对齐以控制运行时的对齐。
在没有C 11的情况下,最容易使用两个大于或等于sizeof(T)
的功率。您可能还需要将其限制为最大原始的对齐。8是64位体系结构的一个非常安全的赌注(尽管您可能需要密切关注SSE数据类型)。
相关文章:
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 如何访问在 c++ 中在类内声明的结构类型指针变量?
- (C )找到基本类型指针的儿童类型
- 表达式必须具有指向对象的指针类型(指针向量)
- 将子项复制构造到父类型指针中
- C 返回类型指针声明
- 调用虚拟函数而不通过类类型指针创建任何对象
- C++ 如何使用类类型指针制作向量
- 为什么基类型指针不能获取派生类对象的地址值?
- 如何在 C++ 中获取映射类型指针,映射
- 如何检查该类型的类型指针是正确对齐的
- 正在转换为短类型指针
- 指向任意类方法的模板非类型指针
- 如何通过强制转换类型指针将字符数组转换为uint16_t
- 指向shared_ptr的不透明类型 C 指针
- C++:从值类型指针强制转换为包含迭代器
- C/C++:访问给定类型指针的位置与访问另一类型指针的相同位置不同
- 比较类型指针
- 数据类型指针使用*(Datatype *)
- 如何打印c++中char类型指针的所有值