Memory model
Définit la sémantique du stockage en mémoire informatique pour les besoins de la machine abstraite C++.
La mémoire disponible pour un programme C++ est une ou plusieurs séquences contiguës d' octets . Chaque octet en mémoire possède une adresse unique.
Table des matières |
Octet
Un octet est la plus petite unité adressable de mémoire. Il est défini comme une séquence contiguë de bits, suffisamment grande pour contenir
-
la valeur de toute
UTF-8unité de code (256 valeurs distinctes) et de
|
(jusqu'en C++23) |
|
(depuis C++23) |
Similairement au C, le C++ prend en charge des octets de tailles 8 bits et supérieures.
Les types char , unsigned char , et signed char utilisent un octet pour le stockage et la représentation de la valeur . Le nombre de bits dans un octet est accessible via CHAR_BIT ou std:: numeric_limits < unsigned char > :: digits .
Emplacement mémoire
Un emplacement mémoire est le stockage occupé par la représentation d'objet d'un objet de type scalaire qui n'est pas un champ de bits , ou la plus grande séquence contiguë de champs de bits de longueur non nulle.
Remarque : Diverses fonctionnalités du langage, telles que les références et les fonctions virtuelles , peuvent impliquer des emplacements mémoire supplémentaires qui ne sont pas accessibles aux programmes mais sont gérés par l'implémentation.
struct S { char a; // emplacement mémoire #1 int b : 5; // emplacement mémoire #2 int c : 11, // emplacement mémoire #2 (suite) : 0, d : 8; // emplacement mémoire #3 struct { int ee : 8; // emplacement mémoire #4 } e; } obj; // L'objet « obj » est constitué de 4 emplacements mémoire distincts
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| CWG 1953 | C++98 |
les objets occupant le même stockage étaient
considérés comme des emplacements mémoire différents |
l'emplacement mémoire
fait maintenant référence au stockage |
Voir aussi
|
Documentation C
pour
Modèle de mémoire
|