为什么c ++空类没有字节对齐?

问题描述 投票:1回答:1

我最近了解到空类的大小为1而不是零。为什么它没有字节对齐,其中在32位环境中,它的大小应为4?下一个对象的地址是什么?

c++ memory alignment sizeof empty-class
1个回答
2
投票

因为C ++根本不保证变量的4字节对齐或字对齐。如果这对您很重要,则可以使用alignas

指定对齐要求
alignas

现在,struct alignas(4) my_empty_struct {}; 变量的地址应为4的倍数-和my_empty_struct

或者,您可以自己用一个虚拟字段填充结构以进行对齐。 so will its size, apparently有点像填充字段不可访问。

© www.soinside.com 2019 - 2024. All rights reserved.