ein*_*ica 4 c++ sizeof language-lawyer c++11 alignas
这个程序:
struct alignas(4) foo {};
int main() { return sizeof(foo); }
Run Code Online (Sandbox Code Playgroud)
返回 4,包含 GCC 10.1 和 clang 10.1,以及 icc 19.0.1。
这让我想知道 - 是否必须alignas()以sizeof()这种方式影响?即增加超出结构最初大小的大小?或者 - 这种变化只是实现的特权吗?
alignas() 是否必须以这种方式影响 sizeof()?即增加超出结构最初大小的大小?
是的。类的大小是根据该类型数组的元素之间的距离定义的。数组元素之间没有填充(类型内的填充除外,因此是大小的一部分)。如果大小小于对齐方式,则相邻数组元素不可能满足该对齐方式。
大小必须至少与对齐一样多,并且必须是对齐的倍数,对齐始终是 2 的幂。
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |