Если бы в языках программирования не было рекурсии, в стеке не было бы необходимости: достаточно было бы статической памяти - как в Fortran-IV.
Выделить/освободить место в стеке очень быстро, но объём выделяемой в стеке памяти в каждой подпрограмме фиксирован и определяется объявленными в этой подпрограмме переменными. К тому же во многих языках программирования размер стека ограничен.
Память, выделенная в стеке, автоматически освобождается с выходом из подпрограммы, в которой она была выделена.
Выделить/освободить место в куче многократно медленнее, но выделять участки памяти в куче можно в любой момент и в любом кол-ве - пока куча не исчерпалась. Размер кучи часто на порядки больше размера стека.
Память, выделенная в куче, остаётся занятой, пока её явно не освободить (или пока она не перестанет использоваться - в языках со сборкой мусора).
P.S. Ты забыл третий вариант: статическая память, которая и не стек, и не куча.
C#
Зачем нужно разделение на стек и кучу?
Баха Темиров
Что такое статическая память? Она для чего? Есть ли в C#?
Стек — это область оперативной памяти, которая создаётся для каждого потока, это очень быстрое хранилище памяти. Но эти преимущества приводят к ограниченному размеру стека и специальному способу получения значений. Для того, чтобы избежать этих ограничений, можно пользоваться кучей — она позволяет создавать динамические и глобальные переменные — но управлять памятью должен либо сборщик мусора, либо сам программист, да и работает куча медленнее.
Похожие вопросы
- Зачем нужно разделение на типы char и string в c# ?
- Нужно, чтобы когда закрывалось консольное приложение на C# происходило какое-то действие!
- Нужно ли мне пойти учиться или же начать программировать?
- Есть кто разбирается в C# или в ПаскальABC? нужно найти сумму ряда
- Как работают элементы доступа set и get в C#? Никак не могу понять их. Ответьте только по делу, не нужно писать ерунду
- Нужно написать код на C#
- Ребят, очень нужно, пожалуйста
- Хочу заняться программирование с нуля, нужно ли знание английский
- Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.
- Вопрос о стеке и куче