@avion123678

Стек и куча (память)?

Почему, относительно кучи, стек на столько мал 1 - 8 мб в среднем? Стек работает быстрее, почему бы не выделить для него больше памяти?
  • Вопрос задан
  • 2981 просмотр
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
почему бы не выделить для него больше памяти?

Действительно, почему бы и нет, учитывая, что эта настройка в руках программиста собирающего (на венде, см. cl /F) или запускающего (в *nix, см. ulimit -s) программу?

Стек работает быстрее

А что, уже научились освобождать выделенную на стеке память в произвольном порядке?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks
Вы можете выделить столько память, сколько требуется, однако следует учитывать, что:
1. чем больше стек, тем он медленнее
2. 99% программ не используют даже маленький стек полностью
3. хранить большие переменные на стеке неэффективно
Ответ написан
@carakan
Нужно понимать почему стек эффективен. Это не от того, что там как-то по особенному выделили память, а потому, как его по особому используют.
Там лежать только относительно маленькие локальные переменные. Работаешь ты только с верхушкой стека. Поэтому вся она хранится в кеш памяти. Если кеш специально раздувать (например делать вместо динамических массивов в куче массив на стеке с запасом), он утратит свою эффективность.
Так как переменные в стеке лёжат подряд, мы не может там реализовать new. А без динамических массивов особо много памяти и не нужно. Выделенного по умолчанию значения обысно хватает на все случаи жизни. Увеличивать стоит только если действительно не хватает. Но это может случиться только, например, при работе с глубокими графами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы