Всем привет!
Автоматическая память хранит данные в стеке.
Динамическая - в куче.
Я верно понял?
А статическая?
Другие языки программирования и технологии
C++ Статическая память
Автоматическая - выделяется на стеке (в оперативной памяти) у запущенной программы при переходе в соответствующую область видимости, например, функцию, или блок, выделенный фигурными скобками.
Динамическая - выделяется в куче (в оперативной памяти) у запущенной программы с помощью вызова функций malloc, new (или LocalAlloc/GlobalAlloc в WinApi).
Статическая - выделяется компилятором на этапе компиляции программы (например, в секции данных .data) и хранится в исполняемом файле (например, .exe после линковки в Windows), т. е. хранится на диске незапущенной программы (в постоянной памяти). А при запуске программы необходимые секции исполняемого файла операционная система загружает в оперативную память (т. е. это происходит перед запуском исполняемого кода). Соответственно, перед запуском исполняемого кода вся статическая память уже загружена в оперативную операционной системой.
Динамическая - выделяется в куче (в оперативной памяти) у запущенной программы с помощью вызова функций malloc, new (или LocalAlloc/GlobalAlloc в WinApi).
Статическая - выделяется компилятором на этапе компиляции программы (например, в секции данных .data) и хранится в исполняемом файле (например, .exe после линковки в Windows), т. е. хранится на диске незапущенной программы (в постоянной памяти). А при запуске программы необходимые секции исполняемого файла операционная система загружает в оперативную память (т. е. это происходит перед запуском исполняемого кода). Соответственно, перед запуском исполняемого кода вся статическая память уже загружена в оперативную операционной системой.
Проверь где скомпилировав программу :)
Видно, что в данных таких же, то бишь статика или нет все от компилятора зависит и для статики он делает обращение по адресу в данных.

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

Василий Кузнецов
В самом коде программы? Как литерал?
Статика захардкожена в r/w секции файла. Именно поэтому, их нельзя использовать в рекурсии и в мульти-потоке. Ибо данные затираются.
Автоматические переменные выделяются на стеке, поэтому в рекурсии раскодуется стек, но пока он есть, всё в порядке. В куче - вообще нет проблем, главное, чтобы утечек не было. А вот статика - это значение, которое сохраняется между вызовами.
Кстати, глобальные переменные тоже из кучи.
Автоматические переменные выделяются на стеке, поэтому в рекурсии раскодуется стек, но пока он есть, всё в порядке. В куче - вообще нет проблем, главное, чтобы утечек не было. А вот статика - это значение, которое сохраняется между вызовами.
Кстати, глобальные переменные тоже из кучи.
>Автоматическая память хранит данные в стеке.
int a; да
>Динамическая - в куче.
int* a = new int; да
>А статическая?
static int a[200];
В файле вшито или на стеке
int a; да
>Динамическая - в куче.
int* a = new int; да
>А статическая?
static int a[200];
В файле вшито или на стеке
Вячеслав Константинов
С наступающим!
В секции данных, как и глобальные переменные...
Похожие вопросы
- Удаляю ненужные программы с диска C, остается памяти 100мб. комп поработает пол часа память заканчивается, хотя ничего..
- люди помогите как увеличить память на диске C
- Подскажите пожалуйста, почему уменьшается память на дисках C и D
- требуется помощь специалистов. Ребята что мне сделать с компьтером чтобы объединить память диска C и D
- Для чего нужны статические классы? (C#)
- c++ задачка про одномерный статический массив
- C++ Как объявить и вывести из функции статический двумерный массив?
- Задача на C++ по одномерным (статическим) массивам, помогите сделать, пожалуйста, очень надо на завтра
- Выделение памяти в C
- Где размещаются статические переменные программы?