当前位置: 首页 > 知识库问答 >
问题:

如何检查类型化指针是否与该类型正确对齐?

子车宏浚
2023-03-14

假设我有一个模板函数,处理指向未知类型T的指针。现在,如果typeT恰好是64位平台上的val*,那么它必须是8字节对齐的,但是如果T恰好是char,它必须是1字节对齐的,如果T恰好是一个类,那么它的对齐要求将取决于它的成员变量。

这一切都可以在纸上计算,但是如何让编译器产生给定类型T的对齐要求?

有没有办法在编译时找到给定类型的对齐要求?

共有2个答案

池麒
2023-03-14

在没有C 11的情况下,最容易使用大于或等于sizeof(T)的下一次幂。您可能还希望将其限制为最大基本体的对齐方式。8在64位体系结构上是一个相当安全的赌注(尽管您可能需要关注SSE数据类型)。

年光明
2023-03-14

在C 11中,您可以使用alignof和alignas进行断言并提供对齐要求。还可以查看std::align以在运行时控制对齐。

 类似资料:
  • 我读过https://projectlombok.org/features/equalsandHashCode几次,从中得出了不同的结论。 下面是我正在做的一个例子来帮助澄清我的问题: GeneratorTypeB看起来与上面的代码段完全相同。现在说我有以下几点: 我用来组合集合的代码在这个设置中工作得很好,但是我要处理的数据很多,所以遇到equals方法中使用的重复的唯一标识符的几率很低,但是它

  • 问题内容: 我需要检查值是否为整数。我发现了这一点:如何检查输入值是整数还是浮点数?,但如果我没记错的话,即使 值 本身确实是,变量仍然是类型。 问题答案: 如果输入值可以是整数以外的其他数字形式,请按 如果传递字符串值, 请使用,请确保在转换失败的情况下使用try catch进行错误处理。

  • 问题内容: 通过使用Java反射,我们可以轻松知道对象是否为数组。判断对象是否为集合(Set,List,Map,Vector …)的最简单方法是什么? 问题答案:

  • javac如何检查参数化类型?我找到了关于JVM规范的信息http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10.1但是关于泛型类型的信息在运行时不可用。或者检查类似于算法JVM的算法javac?请帮助我解决这个问题!

  • 我需要一个代码来检查woocommerce产品类型是否不是“变量” 为了检查某物是否是可变产品,我通常使用这个: 但我需要检查它是否不是一个变量产品,所以我认为我应该这样做,但这会导致PHP错误。。。 编辑:我得到以下错误:"致命错误:未捕获错误:调用成员函数is_type()在空" 我以为我的代码有问题。但后来我在其他模板文件中测试了它,它成功了。我想在functions.php中使用我的php

  • 问题内容: 我有以下课程(来自简单的Spring教程) 其中Validator类是Spring 2.5中的类。 如果我尝试向其中添加参数,则supports方法显示警告(Class是原始类型。对泛型类型Class的引用应进行参数化) 我收到以下错误: 关于这种类型的问题有很多线索,但是我想获得一个完整的答案并真正理解它,而不会用“隐藏”这个问题! 问题答案: 接口使用原始类型声明该方法。在这种情况