内存模型

来自cppreference.com
< cpp‎ | language


 
 
C++ 语言
 
 

为 C++ 抽象机器的目的定义了计算机内存存储的语义。

可为 C++ 程序所用的内存是字节 的一或多个连续序列。内存中的每个字节拥有唯一的地址

字节

字节 是最小的可寻址内存单元。它被定义为相接的位序列,该序列大到足以保有

  • 任何 UTF-8 编码单元(256 个相异值)和
(C++23 前)
(C++23 起)

与 C 相似,C++ 也支持 8 位或更大的字节。

charunsigned charsigned char 类型把一个字节用于存储和值表示。字节中的位数可作为 CHAR_BITstd::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 个分离的内存位置组成

参阅