名稱空間
變體
操作

記憶體模型

來自 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++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
CWG 1953 C++98 佔用相同儲存的物件被
認為是不同的記憶體位置
記憶體位置
現在指代儲存

[編輯] 另請參閱

C 文件 關於 記憶體模型