gpt4 book ai didi

c++ - "minimum alignment"和 "preferred alignment"和有什么区别?

转载 作者:行者123 更新时间:2023-12-03 03:21:09 27 4
gpt4 key购买 nike

最近我观察到,在 Clang 9.0 上 alignof__alignofunsigned long long 返回不同的值,并且在 https://reviews.llvm.org/D54814 处对此进行了讨论:

Starting in Clang 8.0 and GCC 8.0, alignof and __alignof return different values in same cases. Specifically alignof and _Alignof return the minimum alignment for a type, where as __alignof returns the preferred alignment.

我了解类型对齐,但​​从未遇到过“最小对齐”和“首选对齐”。

有人可以帮我理解这些到底是什么以及有什么区别吗?谢谢。

最佳答案

最小对齐是(在给定平台上)不会崩溃的对齐。在 x86-64 上它是一个字节。上PowerPCSparcRISC-V它可能是 4 或 8 个字节。

首选对齐方式是通常的对齐方式,例如由于处理器总线或 CPU 缓存。在 x86-64 上,unsigned long long 可能是 8 个字节。任何不太一致的访问都会造成性能损失。

详细信息是目标处理器和 ABI具体(例如,参见 this )。想想cross-compilers .

semantics C 或 C++ 的定义并不完美,也没有完全形式化。查看 C++ 草案 standard : 这是用英文写的,没有正式化。但另请参阅Frama-C (它有一个 C++ 实验性前端)和 CompCert 。了解 undefined behavior .

关于c++ - "minimum alignment"和 "preferred alignment"和有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59614125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com