空C++类的一个字节中究竟存储了什么
What actually is stored in one byte of empty C++ class?
如果您要创建一个完全空类的对象,则其大小将大于0,这是标准所保证的(按顺序,两个对象具有不同的地址(。但我感兴趣的是这个字节中存储了什么(一些值、索引、地址(?有什么办法知道这一点吗?
它的内容与用于填充char
和int
成员之间的间隙的任何其他填充符相同(未知、未定义(。与"间隙填充器"一样,它除了"确保这些数据的位置正确"之外,没有其他用途。如果一个空类的大小为零,那么由两个这样的对象组成的数组将占用零个字节,并且两个对象都具有相同的地址,这将使各种事情变得非常奇怪。
从技术上讲,存储在那里的内容是未指定的
简而言之,这取决于实现,并且实现不需要记录行为。
如果我回忆正确,标准保证空类的对象将占用空间。它没有具体说明有多少空间,也没有说明那里存储了什么,所以这取决于实现者。
如果你想知道在给定的空间里是什么,你可以重新解释并看一看。
什么都没有,只是填充。您不能像使用任何其他填充一样,依赖于存储在那里的值,甚至根本不存在任何值。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- std::当在256字节边界上写入整数时,流的奇怪行为
- 当比特(而不是字节)的顺序至关重要时的持久性
- 传递给std::function template的template参数究竟代表什么
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何在文件中查找字节序列
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 字节到位运算符重载C++
- 在java中读取c++字节的位字段
- 使用 std::vector::reverse_iterator 将 int 序列化为字节向量?
- 字节真的是最小可寻址单元吗
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 空C++类的一个字节中究竟存储了什么