Раздел: Документация / Стандарт языка С++ /

1.7. Модель памяти C++

Все способы изучить Python Все способы изучить С++

Начинающие программисты даже не догадываются о том, какой огромный пласт в этой области скрыт от их глаз, и чего многие из новичков не увидят никогда, потому что это тёмная сторона программирования - чистый исходный код системного уровня… Подробнее...

1. Основной единицей хранения в модели памяти C++ является байт. Байт, по крайней мере, имеет достаточный размер для того, чтобы содержать любой элемент базового набора символов среды исполнения (2.3) и восьмибитные кодовые модули кодировки Unicode UTF-8. Байт состоит из непрерывной последовательности битов, количество которых определено реализацией. Наименьший значащий бит называется младшим битом; наибольший значащий бит называется старшим битом. Память, доступная для программы на C++, состоит из одной или нескольких последовательностей непрерывных байтов. Каждый байт имеет уникальный адрес.

2. [ Примечание: Представление типов описано в 3.9. — конец примечания ]

3. Ячейка памяти - это либо объект скалярного типа, либо максимальная последовательность смежных битовых полей, все из которых имеют ненулевую ширину. [ Примечание: Различные функции языка, такие как ссылки и виртуальные функции, могут включать дополнительные области памяти, которые недоступны для программ, но управляются реализацией. — конец примечания ] Два или более потоков выполнения (1.10) могут обновлять и получать доступ к отдельным ячейкам памяти, не мешая друг другу.

4. [ Примечание: Таким образом, битовое поле и смежное небитовое поле находятся в отдельных ячейках памяти и, следовательно, могут одновременно обновляться двумя потоками выполнения без помех. То же самое относится к двум битовым полям, если одно объявлено внутри объявления вложенной структуры, а другое - нет, или если они разделены объявлением битового поля нулевой длины, или если они разделены объявлением небитового поля. Небезопасно одновременно обновлять два битовых поля в одной и той же структуре, если все поля между ними также являются битовыми полями ненулевой ширины. — конец примечания ]

5. [ Пример: Структура, объявленная как

struct 
{
  char a;
  int b:5,
  c:11,
  :0,
  d:8;
  struct {int ee:8;} e;
}

содержит четыре отдельных ячейки памяти: Поле a и битовые поля d и e.ee являются отдельными ячейками памяти и могут быть изменены одновременно, не мешая друг другу. Битовые поля b и c вместе составляют четвертую ячейку памяти. Битовые поля b и c не могут быть изменены одновременно, но, например, b и a могут быть изменены. — конец примера ]


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика