где находится статическая переменная внутри структуры? - PullRequest
2 голосов
/ 03 апреля 2012

в C, если я объявляю статическую переменную внутри локального структурирования, где размещается статическая переменная? Поскольку структура находится в стеке, статическая переменная также будет в стеке?

Ответы [ 2 ]

10 голосов
/ 03 апреля 2012

Если я объявляю статическую переменную внутри локального структуро

В текущем C ключевое слово static не имеет смысла внутри структуры . Вы должны получить ошибку от компилятора.


Если под «статическим» вы подразумеваете «не выделено с помощью malloc»: член структуры всегда хранится в том же месте, что и остальная часть структуры. Если указанный член является указателем, он может указывать на память в той же области или нет.

3 голосов
/ 03 апреля 2012

В C ++ статические переменные будут инициализированы, когда вы впервые используете их класс. В C они не допускаются, поскольку компилятору C необходимо хранить всю структуру в одном и том же типе памяти. Об их хранении см. Где хранятся статические переменные (в C / C ++)?

...