статические переменные, локальные для функции - PullRequest
1 голос
/ 04 августа 2011

В Linux «статические» переменные присутствуют в сегменте BSS (в коде, который не выполняется), а «локальные» переменные присутствуют в «стеке».Это означает, что статические переменные, локальные для функции, присутствуют в области BSS.Как ведется бухгалтерский учет, чтобы убедиться, что область действия находится внутри самой функции?

1 Ответ

3 голосов
/ 04 августа 2011

Где хранится переменная не имеет ничего общего с областью видимости.Обычно сам компилятор ограничивает область видимости (доступ к переменной).Если в функции есть оператор типа:

static int xyzzy;

, то xyzzy не будет разрешен для доступа к коду вне этой функции, несмотря на тот факт, что он имеет статическую продолжительность хранения.

Любая попытка сделать это будет ошибкой во время компиляции, а не проверкой во время выполнения.

Фактически, вы можете влиять на локальную статическую переменную, но с чем-то вродепереполнение буфера (попадание в область хранения, где оно существует), а не через его имя (которое компилятор будет запрещать).

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