Время жизни статических и автоматических переменных в C отличается:
- Статические переменные имеют выделенную память и определённое значение в течение всего времени выполнения программы. learn.microsoft.com Выделение памяти и инициализация производятся только один раз перед началом работы программы. learn.microsoft.com
- Автоматические переменные имеют выделенную память и определённое значение только внутри блока, в котором они определены или объявлены. learn.microsoft.com Автоматическому идентификатору выделяется новая память при каждом входе программы в соответствующий блок, при выходе программы из этого блока память (и значение) идентификатора освобождается. learn.microsoft.com
Таким образом, память для статических переменных выделяется при запуске программы и не меняется, а также не освобождается до окончания работы приложения, а память для автоматических данных выделяется в стеке, указатель на вершину которого сохраняется перед вызовом функции и восстанавливается после выхода из неё. narodstream.ru