Документация по Clarion

         

Глобальные, локальные, статические, и динамические данные


Термины Глобальные и Локальные относятся к доступности данных. Глобальные данные доступны всюду в программе, Локальные данные имеют ограниченную доступность. Статические и Динамические относятся к распределению памяти для данных. Память для Статических данных выделяется при загрузке программы, для динамических данных выделяется во время исполнения.
Имеются три типа данных которые могут быть определены в программе на Кларион: Глобальные Статические данные, Локальные Статические данные, и Локальные Динамические данные.
Глобальные Статические данные объявлен в секции данных ПРОГРАММЫ, между ключевыми словами PROGRAM и CODE. Они доступны выполнимым операторам и выражениям в каждой ПРОЦЕДУРЕ и ФУНКЦИИ ПРОГРАММЫ. Они всегда в памяти во время исполнения программы.
Локальные Статические данные объявлены в модуле-ЧЛЕНЕ, между ключевыми словами MEMBER и PROCEDURE (или FUNCTION). Доступность этих данных ограничена переделами модуля-ЧЛЕНА в котором они объявлены; к ним могут обращаться только ПРОЦЕДУРЫ и ФУНКЦИИИ в модуле-ЧЛЕНЕ. Однако, они могут быть переданы как параметр любой другой ПРОЦЕДУРЕ или ФУНКЦИИ. Локальные Статические данные всегда в памяти во время выполнения программы.
Локальные Динамические данные объявлены в секции данных ПРОЦЕДУРЫ или ФУНКЦИИ, между ключевыми словами PROCEDURE (или FUNCTION) и CODE. Доступны только в ПРОЦЕДУРЕ или ФУНКЦИИИ в которой они объявлены; на них может ссылаться только эта ПРОЦЕДУРА или ФУНКЦИЯ. Однако, они могут быть переданы как параметр любой другой ПРОЦЕДУРЕ или ФУНКЦИИ. Память используемая локальными данными динамически размещается в стеке при вызове PROCEDURE или FUNCTION, и освобождается когда PROCEDURE или FUNCTION закончена.
Cтруктурам данных SCREEN, PULLDOWN, FILE, QUEUE, и REPORT назначается Статическая память, объявлены они Глобальными, Локальными в модуле-ЧЛЕНЕ, или локальными в ПРОЦЕДУРЕ или ФУНКЦИИ. Только описания переменных локальные в ПРОЦЕДУРЕ или ФУНКЦИИ размещены на стеке. Это позволяет ФУНКЦИИ или ПРОЦЕДУРЕ быть истинно рекурсивной, получая новую копию Локальных переменных при каждом ее вызове, при использовании только одной копии любой структуры.
См. Также:



Содержание раздела