Какой термин для хранения, где локальные и временные хранятся в C ++? - PullRequest
2 голосов
/ 01 ноября 2011

C ++ 03 Standard определяет длительность хранения в 3.7, что включает длительность автоматического хранения в 3.7.2, которое я читаю как «автоматическая продолжительность хранения», а не «автоматическое хранение» , Также 3.7.3 / 1 читает

Реализация C ++ обеспечивает доступ к динамическому хранилищу и управление им ...

где dynamic storage не выделено курсивом, поэтому оно не вводится в качестве определения, но, по крайней мере, упоминается. Однако я не могу найти место, где автоматическое хранение было бы упомянуто подобным образом, только продолжительность автоматического хранения упоминается во всем стандарте.

Каков термин для хранилища (не для продолжительности, а для самого хранилища), где локальные и временные значения хранятся в стандарте C ++?

Ответы [ 2 ]

5 голосов
/ 01 ноября 2011

Не должно быть термина. Что касается стандарта C ++, это не имеет значения. Все, что имеет значение, это продолжительность этого хранилища, а не место, где оно находится.

В стандарте также не упоминаются «куча» или «стек», хотя они в значительной степени универсально используются компиляторами для реализации семантики хранилища, описанной в стандарте.

Одной из возможных причин, почему такого единственного термина не существует, может быть то, что объекты с автоматическим хранением не обязательно находятся в одном месте. Они могут быть в стеке или в куче, как члены класса другого объекта или, возможно, в регистре.

4 голосов
/ 01 ноября 2011

Если в стандарте не указано, куда они идут, реализация может разместить их там, где захочет.Обычно они бывают в стеке, но стек не является обязательным требованием для реализации.

Стандарт существует для определения поведения , не как они работают под прикрытием.

Существует упоминание * в C ++ 03 из automatic storage, за исключением automatic storage duration.Это также относится к (очень позднему черновику) стандарта C ++ 11.Во всех случаях важнее время жизни объекта, а не место его хранения.

...