Давайте рассмотрим свойства класса памяти auto и отметим, какие из перечисленных утверждений не являются справедливыми.
- Не объявлены как register: Это утверждение верно. Переменные auto могут быть объявлены как register, но по умолчанию они не являются таковыми. Это свойство не является справедливым для auto.
- Память под данные выделяется при вызове функции и освобождается при завершении работы функции: Это утверждение справедливо. Переменные auto создаются в стеке при вызове функции и уничтожаются при выходе из нее.
- Хранятся в стеке функций: Это утверждение также верно. Переменные auto хранятся в стеке, что позволяет им автоматически освобождаться после завершения функции.
- Являются динамическими данными: Это утверждение неверно. Динамические данные выделяются в куче с помощью операторов new или malloc, тогда как переменные auto выделяются в стеке.
- Не объявлены как static: Это утверждение верно. Переменные auto не могут быть объявлены как static, так как они имеют автоматическое время жизни, в отличие от статических переменных.
- Могут быть использованы в любом месте программы: Это утверждение неверно. Переменные auto имеют область видимости, ограниченную блоком кода (например, функцией), в котором они были объявлены.
- Объявлены в функции: Это утверждение верно. Переменные auto обычно объявляются внутри функций.
Итак, не справедливыми являются следующие утверждения:
- Являются динамическими данными
- Могут быть использованы в любом месте программы