Speichermodell
Definiert die Semantik des Computerspeichers für die Zwecke der C++-Abstraktionsmaschine.
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.
Inhalt |
[bearbeiten] Byte
Ein Byte ist die kleinste adressierbare Speichereinheit. Es ist definiert als eine zusammenhängende Sequenz von Bits, die groß genug ist, um
- den Wert einer beliebigen `UTF-8`-Code-Einheit (256 verschiedene Werte) und von
|
(bis C++23) |
|
(seit C++23) |
Ähnlich wie C unterstützt C++ Bytes mit Größen von 8 Bits 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 als CHAR_BIT oder std::numeric_limits<unsigned char>::digits zugänglich.
[bearbeiten] Speicheradresse
Eine Speicheradresse ist der Speicherplatz, der von der Objektdarstellung eines Objekts eines skalaren Typs, das kein Bitfeld ist, oder die größte zusammenhängende Sequenz von Bitfeldern nicht-nuller Länge belegt.
Hinweis: Verschiedene Sprachmerkmale wie Referenzen und virtuelle Funktionen können zusätzliche Speicheradressen beinhalten, die für Programme nicht zugänglich sind, aber von der Implementierung verwaltet werden.
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
[bearbeiten] 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 Speicherplatz belegen, wurden als unterschiedliche Speicheradressen betrachtet |
Speicheradresse bezieht sich nun auf Speicherplatz |
[bearbeiten] Siehe auch
| C-Dokumentation für Speichermodell
|