stack- все статьи тега


C++ - стек со связанным списком-ошибка плохой памяти?

В настоящее время я пишу стек, который реализуется с помощью связанного списка. Я получаю эту ошибку: Unhandled exception at 0x75249617 in STACK_LinkedList.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x002ee8f8. Я полагаю, что это, возможно, происходит от моих push() или pop() функций. Я не могу найти свою ошибку. Я довольно новичок в связанных списках, поэтому мне немного трудно найти ошибки. Вот моя функция push(): // Adds an item to the top of the stack template &l ...

Что и где находятся стек и куча?

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

Что такое стека?

Что такое стека? Перерыл но не смог найти ясный ответ! ...

В C фигурные скобки действуют как кадр стека?

Если я создаю переменную в новом наборе фигурных скобок, эта переменная выскочила из стека на закрывающей скобке или она висит до конца функции? Например: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } будет d занимайте память во время ? ...

Оптимизирует ли Python хвостовую рекурсию?

У меня есть следующий фрагмент кода, который завершается со следующей ошибкой: RuntimeError: максимальная глубина рекурсии превысил Я попытался переписать это, чтобы обеспечить оптимизацию хвостовой рекурсии (TCO). Я считаю, что этот код должен был быть успешным, если бы имел место TCO. def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) должен ли я заключить, что Python не делает никакого типа TCO, или мне про ...

Стек, статика и куча в C++

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

Java массивы как добавить элементы в начале

Мне нужно добавить элементы в ArrayList очередь что угодно, но когда я вызываю функцию, чтобы добавить элемент, я хочу, чтобы он добавил элемент в начале массива (так что он имеет самый низкий индекс), и если массив имеет 10 элементов, добавляющих новые результаты в удалении самого старого элемента (тот, у которого самый высокий индекс). есть ли у кого-нибудь предложения? ...

Когда векторы выделяются, они используют память в куче или стеке?

все ли следующие утверждения верны? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be on heap. как память выделяется внутренне для Type на vector или любой другой контейнер STL? ...

Правильное использование стека и кучи в C++?

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

Массивы, куча и стек и типы значений

int[] myIntegers; myIntegers = new int[100]; в приведенном выше коде новый int [100] генерирует массив в куче? Из того, что я прочитал на CLR через c#, ответ да. Но я не могу понять, что происходит с фактическим int внутри массива. Поскольку они являются типами значений, я бы предположил, что они должны быть упакованы, так как я могу, например, передать myIntegers в другие части программы, и это загромождало бы стек, если бы они оставались на нем все время. Или я ошибаюсь? Я бы предположил, чт ...

Как увеличить размер стека Java?

я задал этот вопрос, чтобы узнать, как увеличить размер стека вызовов времени выполнения в JVM. У меня есть ответ на это, и у меня также есть много полезных ответов и комментариев, связанных с тем, как Java обрабатывает ситуацию, когда требуется большой стек времени выполнения. Я расширил свой вопрос с резюме ответов. Первоначально я хотел увеличить размер стека JVM, чтобы программы, такие как запуски без StackOverflowError. public class TT { public static long fact(int n) { return n &lt ...

С/C++ максимальный размер стека программы

Я хочу сделать DFS на массиве 100 X 100. (Скажем, элементы массива представляют узлы графа) поэтому, предполагая наихудший случай, глубина рекурсивных вызовов функций может доходить до 10000 с каждым вызовом, занимающим до 20 байт. Так это осуществимые средства есть ли возможность stackoverflow? каков максимальный размер стека в C / C++? пожалуйста, укажите для gcc для обоих 1) cygwin на Windows 2) Unix Что такое общие ограничения? ...

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

Я знаю, что в архитектурах, с которыми я лично знаком (x86, 6502 и т. д.), стек обычно растет вниз (т. е. каждый элемент, помещенный в стек, приводит к уменьшению SP, а не к увеличению). Я задаюсь вопросом об историческом обосновании этого. Я знаю, что в едином адресном пространстве удобно запускать стек на противоположном конце сегмента данных (скажем), поэтому проблема возникает только в том случае, если две стороны сталкиваются посередине. Но почему стек традиционно получает верхнюю часть? ...

Стек растет вверх или вниз?

у меня есть этот кусок кода в C: int q = 10; int s = 5; int a[3]; printf("Address of a: %dn", (int)a); printf("Address of a[1]: %dn", (int)&a[1]); printf("Address of a[2]: %dn", (int)&a[2]); printf("Address of q: %dn", (int)&q); printf("Address of s: %dn", (int)&s); выход: Address of a: 2293584 Address of a[1]: 2293588 Address of a[2]: 2293592 Address of q: 2293612 Address of s: 2293608 Итак, я вижу, что от a до a[2], адреса памяти увеличивается на 4 байта ка ...

Переполнение стека из глубокой рекурсии в Java?

после некоторого опыта работы с функциональными языками, я начинаю использовать рекурсию больше в Java-но язык, кажется, имеет относительно мелкий стек вызовов около 1000. есть ли способ сделать стек вызовов больше? Например, могу ли я сделать функции, которые являются миллионами вызовов глубоко, как в Erlang? Я замечаю это все больше и больше, когда я делаю проект Эйлера проблемы. спасибо. ...