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

标签 c++ memory alignment sizeof empty-class

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

最佳答案

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

struct alignas(4) my_empty_struct {};

现在,my_empty_struct变量的地址将是4-和so will its size, apparently的倍数。

另外,您可以自己用一个虚拟字段填充结构以进行对齐。 alignas有点像填充字段不可访问。

关于c++ - 为什么C++空类没有字节对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61854244/

相关文章:

c++ - Mongoose 服务器回调循环

c++ - 处理器最方便的整数类型

c++ - 为什么 malloc() 基于链表?

c - 动态内存分配问题

c++ - C++中的前向声明错误

java - 内存使用

c - 释放从 realloc 返回的空指针?

html - 去除垂直、交错和重叠的卡片堆之间的水平空间

c - 关于 c 中的 __alignof 结构

php - 由于继承的属性,CSS 文本对齐不适用