命名空间
变体
操作

内存模型

来自 cppreference.com
< cpp‎ | 语言
 
 
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;     // memory location #1
    int b : 5;  // memory location #2
    int c : 11, // memory location #2 (continued)
          : 0,
        d : 8;  // memory location #3
    struct
    {
        int ee : 8; // memory location #4
    } e;
} obj; // The object “obj” consists of 4 separate memory locations

[编辑] 另请参阅

C 文档 for 内存模型