Схема хранения объектов C - PullRequest
0 голосов
/ 03 июля 2018

Структура хранения объектов C в основном не определена. Насколько я знаю только для struct членов и элементов массива, макет определен.

Интересно, что для параметров функции стандарт C11 прямо упоминает, что макет не определен:

Расположение хранилища для параметров не указано. (C11 § 6.9.1 P 9)

Мне было интересно, если стандарт также явно определяет, что для других объектов, например, объектов с автоматической продолжительностью хранения, макет не определен. Кто-нибудь знает об этом? Я не мог найти ничего об этом в стандарте.

А как насчет объектов с внутренней или внешней связью?

1 Ответ

0 голосов
/ 03 июля 2018

Нет, я не думаю, что есть явное упоминание того факта, что мы ничего не можем знать об относительной компоновке объектов. На самом деле, стандарт C еще более радикальный, вам даже не разрешено сравнивать с оператором < две переменные, которые не являются элементами одного и того же массива, а также нельзя делать арифметику между указателями на объекты, которые являются не является частью одного и того же массива.

Таким образом, весь вопрос о «макете» нельзя даже сформулировать с помощью терминологии, которую предоставляет стандарт C.

...