|Модель | Описание |
|---|---|
| Автоматическая |Вы объявляете переменную при первом использовании, и она автоматически удаляется при выходе из области видимости. Без ключевого слова `static` любая переменная, объявленная внутри функции, является автоматической. В типичном языке программирования все данные автоматические. |
|Статическая | Статические переменные находятся в одном и том же месте в течение всего времени работы программы. Размер массива фиксирован в момент создания, но значения в нем могут изменяться (поэтому массив нельзя назвать истинно статическим ). Данные инициализируются до начала выполнения функции `main`, поэтому ининиализировать их можно только константами, не требующими вычислений. Переменные, объявленные вне функций ( в области видимости файла) и внутри функций с ключевым словом `static`, являются статическими. Если вы забудете инициализировать статическую переменную, она будет инициализирована нулями (или значением NULL).|
| Динамическая | Динамическая память неразрывно связана с функциями `malloc` и `free`, именно здесь происходит большинство ошибок нарушения защиты памяти (segfault). Кроме того, это единственный тип памяти, позволяющий изменять размер массива после его объявления. |