Давайте разберем свойства, которые были перечислены, и определим, какие из них не являются справедливыми для класса памяти static.
- Областью действия данных может являться блок функции - неправильно. Данные, объявленные как static, имеют область видимости, ограниченную блоком, но их время жизни продолжается на протяжении всей работы программы.
- Данные хранятся в статическом сегменте памяти - правильно. Данные, объявленные как static, действительно хранятся в статическом сегменте памяти.
- Память под данные распределяется на этапе компиляции программы - правильно. Память для static переменных выделяется во время компиляции, и она существует до завершения программы.
- Память под данные может выделяться при вызове функции и освобождаться при завершении работы функции - неправильно. Для static переменных память выделяется один раз и не освобождается до завершения программы.
- Областью действия данных может являться вся программа - правильно. Хотя область видимости может быть ограничена, значение static переменной доступно на протяжении всей программы.
- Обязательно объявлены как static - неправильно. Переменные могут быть объявлены как static, но это не является обязательным требованием. Они могут также быть обычными локальными или глобальными переменными.
Таким образом, свойства, которые не справедливы для класса памяти static, это:
- Областью действия данных может являться блок функции
- Память под данные может выделяться при вызове функции и освобождаться при завершении работы функции
- Обязательно объявлены как static