С прагматики языка программирования, Скотт
Время жизни объекта обычно соответствует одному из трех основных
Механизмы выделения памяти, используемые для управления пространством объекта:
Статическим объектам присваивается абсолютный адрес, который сохраняется на протяжении всего выполнения программы.
Стековые объекты распределяются и освобождаются в порядке «последний пришел — первый вышел», обычно в сочетании с вызовами и возвратами подпрограмм.
- Объекты кучи могут быть выделены и освобождены в произвольные моменты времени. Они требуют более общего (и дорогого) управления хранением
алгоритм.
Являются ли статические члены данных и статические методы класса в
C ++ статические объекты в книге PLP?
Выделено ли хранилище для статических членов данных и статических методов класса во время компиляции или во время выполнения?
Где они расположены?
Благодарю.
Являются ли статические члены данных и статические методы класса в C ++ статическими объектами в книге PLP?
Статические данные членов, да. И статические объекты внутри функций тоже да. Также объекты объявлены в области видимости файла.
Выделено ли хранилище для статических членов данных и статических методов класса во время компиляции или во время выполнения?
Если под распределением вы имеете в виду выделение памяти, их объем памяти зарезервирован во время компиляции, и пространство фактически выделяется в пространстве процесса компоновщиком во время соединения (или динамическим загрузчиком во время загрузки). В любом случае, задолго до запуска.
Однако статические объекты, объявленные в области видимости файла или класса, инициализируется во время выполнения, до вызова функции main ().
Статические объекты, определенные в функциях, различны. Они инициализируются при первом прохождении кода по ним.
Где они расположены?
Везде, где решает компоновщик или загрузчик. На это может повлиять написание собственного сценария компоновщика (боюсь, за рамками этого ответа).
Других решений пока нет …