是否可以在 C++ 中创建一种占用少于一个字节内存的类型?

2024-04-22

对于我的计算,我只需要使用 7 位空间,因此我使用 char 类型。但是我想知道是否可以声明我自己的类型,使用少于一字节的内存?


并不真地。在结构体内部,您可以使用位字段 http://en.wikipedia.org/wiki/Bit_field。因此,如果您知道需要一定数量的固定条目,那么这将是节省一些位的方法(但请注意,该结构将始终填充到至少下一个整数字节)。另请注意,由于“普通”CPU 无法寻址小于八位字节/字节的数量,因此对这些位字段值的访问可能会更慢,因为编译器必须生成额外的指令来获取/存储值“在中间”。所以为了节省一些位,你必须花费一些CPU时间。

The C++11标准 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf章节中说1.7 C++内存模型(强调我的):

C++内存模型中的基本存储单位是字节。一个字节至少是足够大以包含基本执行字符集 (2.3) 的任何成员以及八位Unicode UTF-8 编码形式的代码单元,由连续的位序列组成,其数量由实现定义。

换句话说:C++ 中最小的可寻址单元至少有 8 位宽。

旁注:如果您想知道:有些机器(例如 DSP)一次只能寻址大于 8 位的单元 https://stackoverflow.com/questions/2098149/what-platforms-have-something-other-than-8-bit-char;对于这样的机器,编译器可以将“字节”定义为例如16位宽。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 C++ 中创建一种占用少于一个字节内存的类型? 的相关文章

随机推荐