Memory model
Definiert die Semantik der Computerspeicherung für den Zweck der C++ abstrakten Maschine.
Der einem C++-Programm zur Verfügung stehende Speicher besteht aus einer oder mehreren zusammenhängenden Sequenzen von Bytes . Jedes Byte im Speicher hat eine eindeutige Adresse .
Inhaltsverzeichnis |
Byte
Ein Byte ist die kleinste adressierbare Speichereinheit. Es ist definiert als eine zusammenhängende Folge von Bits, die groß genug ist, um
-
der Wert eines beliebigen
UTF-8Code-Elements (256 verschiedene Werte) und von
|
(bis C++23) |
|
(seit C++23) |
Ähnlich wie C unterstützt C++ Bytes mit Größen von 8 Bit und mehr.
Die Typen char , unsigned char und signed char verwenden ein Byte sowohl für die Speicherung als auch für die Wertdarstellung . Die Anzahl der Bits in einem Byte ist zugänglich als CHAR_BIT oder std:: numeric_limits < unsigned char > :: digits .
Speicherort
Ein memory location ist der Speicherplatz, der von der object representation entweder eines Objekts vom scalar type , das kein bit-field ist, oder der größten zusammenhängenden Folge von Bit-Feldern mit nicht-null Länge belegt wird.
Hinweis: Verschiedene Merkmale der Sprache, wie z.B. references und virtual functions , können zusätzliche Speicherbereiche betreffen, die für Programme nicht zugänglich sind, aber von der Implementierung verwaltet werden.
struct S { char a; // Speicherplatz #1 int b : 5; // Speicherplatz #2 int c : 11, // Speicherplatz #2 (fortgesetzt) : 0, d : 8; // Speicherplatz #3 struct { int ee : 8; // Speicherplatz #4 } e; } obj; // Das Objekt „obj“ besteht aus 4 separaten Speicherplätzen
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| CWG 1953 | C++98 |
Objekte, die denselben Speicher belegen, wurden
als unterschiedliche Speicherorte betrachtet |
Speicherort bezieht sich
nun auf Speicher |
Siehe auch
|
C-Dokumentation
für
Speichermodell
|