内存模型
来自cppreference.com
为 C++ 抽象机器的目的定义了计算机内存存储的语义。
可为 C++ 程序所用的内存是字节 的一或多个连续序列。内存中的每个字节拥有唯一的地址。
字节
字节 是最小的可寻址内存单元。它被定义为相接的位序列,该序列大到足以保有
- 任何
UTF-8
编码单元(256 个相异值)和
|
(C++23 前) |
|
(C++23 起) |
与 C 相似,C++ 也支持 8 位或更大的字节。
char、unsigned char 和 signed char 类型把一个字节用于存储和值表示。字节中的位数可作为 CHAR_BIT 或 std::numeric_limits<unsigned char>::digits 访问。
内存位置
一个内存位置 是
注意:语言的各种功能特性,例如引用和虚函数,可能涉及到程序不可访问,但为实现所管理的额外内存位置。
struct S { char a; // 内存位置 #1 int b : 5; // 内存位置 #2 int c : 11, // 内存位置 #2(延续) : 0, d : 8; // 内存位置 #3 struct { int ee : 8; // 内存位置 #4 } e; } obj; // 对象 “obj” 由 4 个分离的内存位置组成