2014-02-17 9 views
0

В какой момент языку требуется компилятор для хранения локальной статической переменной в памяти? Это во время компиляции? Или во время выполнения, когда вызывается функция, содержащая локальную статическую переменную?Когда локальная статическая переменная хранится в памяти?

int* GetMyVariable() 
{ 
    static int A = 50; 
    return &A; 
} 

Я хочу, чтобы иметь возможность использовать память только для «А», если вызывается GetMyVariable(). Если статический не работает, как это, то является ли динамическое распределение моим единственным вариантом? Спасибо за ваше время.

+0

Хранение выделяется для этого во время компиляции. – OldProgrammer

ответ

1

Когда локальная статическая переменная хранится в памяти

Это делается до выполнения программы.

(С99, 6.2.4p3) «Объект, идентификатор объявляется с внешней или внутренней связи, или с хранением класса спецификатор статической имеет статический срок хранения. Его срок службы всей исполнения из программа, и ее сохраненное значение инициализируется только один раз, до запуска программы ».

1

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

Смежные вопросы