Вопросы с тегом «stack»

Структура данных LIFO (Last In, First Out).

99
Стек и куча памяти в Java

Насколько я понимаю, в Java стековая память содержит примитивы и вызовы методов, а кучевая память используется для хранения объектов. Предположим, у меня есть класс class A { int a ; String b; //getters and setters } Где будет храниться примитив aв классе A? Почему куча памяти вообще существует?...

46
Почему стек вызовов имеет статический максимальный размер?

Работая с несколькими языками программирования, я всегда задавался вопросом, почему стек потоков имеет предопределенный максимальный размер, а не расширяется автоматически по мере необходимости.  Для сравнения, некоторые очень распространенные высокоуровневые структуры (списки, карты и т. Д.),...

34
Какой смысл в реализации стека с использованием двух очередей?

У меня следующий домашний вопрос: Реализуйте методы стека push (x) и pop (), используя две очереди. Это кажется мне странным, потому что: Стек - это очередь (LIFO) Я не понимаю, зачем вам нужно две очереди для его реализации Я искал вокруг: GeeksForGeeks Переполнение стека и нашел пару решений. Вот...

33
Почему программы используют стеки вызовов, если вложенные вызовы функций могут быть встроены?

Почему бы не сделать так, чтобы компилятор взял такую ​​программу: function a(b) { return b^2 }; function c(b) { return a(b) + 5 }; и преобразовать его в программу, подобную этой: function c(b) { return b^2 + 5 }; устраняя тем самым необходимость компьютера помнить обратный адрес c (b)? Я...

31
Почему стек растет вниз?

Я предполагаю, что есть история, но почему стек растет вниз? Мне кажется, что переполнение буфера будет намного сложнее использовать, если стек будет расти вверх...

28
Пояснение указателя кадра

В сборке MIPS есть регистр для указателя стека и другой регистр для указателя кадра. Что такое указатель кадра и какова его цель? Чем он отличается от указателя...

24
Зачем нам куча, если в стеке все можно сделать намного эффективнее?

На самом деле это в некоторой степени связано с вопросом, который я задал вчера о том, почему в приложениях, которые мы используем сегодня , необходимы и стек, и куча (и почему мы не можем просто использовать кучу вместо обоих, чтобы иметь простой единый стандарт, чтобы пройти). Однако во многих...

22
Почему в стек помещается что-то, что называется «push»?

По данным http://dictionary.reference.com От себя глагол (используется с объектом) давить на или против (вещь) с силой, чтобы отодвинуть ее. двигаться (что-то) определенным образом, прикладывая силу; пихать; диск: отодвинуть что-то в сторону; толкнуть дверь . осуществлять или достигать, отбрасывая...

22
Сколько стека используется слишком много?

В последнее время, когда я писал на C или C ++, я объявляю все свои переменные в стеке только потому, что это вариант, в отличие от Java. Однако я слышал, что плохая идея объявлять большие вещи в стеке. Почему именно это так? Я полагаю, что переполнение стека связано, но я не очень понимаю, почему...

21
Как размер стека и кучи ограничен ОС?

Примечание : если вам нужно рассмотреть конкретную ОС, чтобы иметь возможность ответить, рассмотрите Linux. Всякий раз, когда я запускаю программу, ей предоставляется пространство для виртуальной памяти, с областью для ее стека и одной для ее кучи. Вопрос 1 : имеют ли стек и куча ограничение по...

19
Понимание стека кадра вызова функции в C / C ++?

Я пытаюсь понять, как строятся стековые фреймы и какие переменные (параметры) помещаются в стек в каком порядке? Некоторые результаты поиска показали, что компилятор C / C ++ принимает решение на основе операций, выполняемых внутри функции. Например, если функция должна была просто увеличить...

14
Когда нет ТШО, когда беспокоиться о том, чтобы унести стек?

Каждый раз, когда обсуждается новый язык программирования для JVM, неизбежно появляются люди, которые говорят что-то вроде: «JVM не поддерживает оптимизацию хвостового вызова, поэтому я предсказываю множество взрывающихся стеков» Есть тысячи вариаций на эту тему. Теперь я знаю, что некоторые языки,...

13
Амортизированный анализ? (Гарантия исполнения в худшем случае)

Что такое амортизированный анализ? И как это может помочь мне достичь наихудших гарантий производительности в моих программах? Я читал, что следующие методы могут помочь программисту достичь гарантий производительности в худшем случае (то есть, по моим собственным словам: гарантировать, что время...

12
Какова цель красной зоны?

Красная зона - это область фиксированного размера в памяти за указателем стека, которая не была «выделена». Компиляторы генерируют сборку для доступа к этой области с помощью простых конечных функций. Но я не вижу реальных преимуществ для красной зоны. Доступ к памяти за указателем стека...

12
Есть ли недостаток в выделении огромного количества стека для одного массива во встроенной системе?

У меня обычно не возникает проблем с выбором, должны ли некоторые данные быть глобальными, статическими или размещаться в стеке (здесь нет динамического выделения, поэтому не нужно использовать кучу). Я также прочитал несколько вопросов и ответов, таких как этот, но мой вопрос более конкретный,...

11
Я понимаю, что такое указатель стека - но для чего он используется?

Указатель стека указывает на вершину стека, в котором хранятся данные на основе того, что мы называем «LIFO». Чтобы украсть чужую аналогию, это похоже на стопку посуды, в которую вы кладете и принимаете посуду сверху. Указатель стека OTOH указывает на верхнюю «тарелку» стека. По крайней мере, это...

11
Стек вызовов начинается снизу или сверху?

Стек - это то, что накапливается снизу вверх. Следовательно, стек вызовов добавляет новые элементы в стек, когда функции вызываются с элементами, удаляемыми из стека, поскольку каждая функция заканчивается, пока стек не опустеет, а затем программа не завершится. Если вышеприведенное верно, почему...

10
Почему основная память для размещения объектов называется «кучей»?

Кто-нибудь понял, почему область основной памяти, где размещаются объекты, называется кучей. Я могу понять обоснование для стека LIFO, но хотел бы знать, каково обоснование для имени...

10
Предел стека

Недавно я протестировал ограничение стека на трех устройствах с разными ОС (под лимитом я подразумеваю максимальное количество уровней, которое может иметь стек), и я заметил, что каждый раз, когда я достигаю 2 ^ 16 уровней, это дает мне ошибка переполнения, и когда я ставлю 2 ^ 16-1, он работает...

10
Концептуально, что это значит, когда говорится, что каждый поток получает свой собственный стек?

Я читал Java Concurrency in Practice от Brian Goetz, и в разделе Confinement Stack упоминается, что каждый поток получает свой собственный стек, и поэтому локальные переменные внутренне ограничены исполняющим потоком; они существуют в стеке исполняющих потоков, который недоступен другим потокам....