Раздел: Документация / Стандарт языка С++ /
1.7. Модель памяти C++
Все способы изучить С++
Начинающие программисты даже не догадываются о том, какой огромный пласт в этой области скрыт от их глаз, и чего многие из новичков не увидят никогда, потому что это тёмная сторона программирования - чистый исходный код системного уровня… Подробнее... |
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 могут быть изменены. — конец примера ]
Вступить в группу "Основы программирования"
Подписаться на канал в RUTUBE Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |