1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 84
|
|
1 | |
Увеличение размера стека14.11.2015, 19:42. Показов 21865. Ответов 41
Метки нет Все метки)
(
Нет ли какой-либо команды, которая бы "приказала" программе расширить стек, чтобы она не вылетала с ошибкой? Просто я решаю одну задачу и не представляю как сделать её без рекурсии.
0
|
|
14.11.2015, 19:42 | |
Ответы с готовыми решениями:
41
увеличение стека Увеличение размера файла Увеличение максимального размера массива Динамическое увеличение размера динамического массива |
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 84
|
|
14.11.2015, 20:16 [ТС] | 3 |
Можно ли как-то сделать это в тексте программы? Я просто должен сдать код решения.
Может быть как-то можно вообще без рекурсии, но улучшить мою рекурсию вряд ли можно. Все объекты(вершины графа) просматриваются только один раз.
0
|
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 84
|
|
14.11.2015, 20:35 [ТС] | 6 |
По-моему граф обойти в глубину можно только с помощью рекурсии или её имитации.
![]()
0
|
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 84
|
|
14.11.2015, 21:54 [ТС] | 8 |
А что делает функция malloc? Подскажите пожалуйста, как её применить для моей задачи?
0
|
DrOffset
|
14.11.2015, 22:03
#9
|
Не по теме: Diplomate, выше тебе намекнули, что неплохо бы показать код, который сейчас не работает. Тогда, возможно, тебе подскажут как его переделать, чтобы ошибка переполнения стека пропала.
0
|
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
|
||||||
14.11.2015, 22:10 | 10 | |||||
Вот malloc как раз и поможет. С помощью malloc вы можете выделять память из кучи для своих нужд, а не из стека. Например для хранения 100 интов в куче определяем такой указатель:
0
|
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
|
|
14.11.2015, 22:12 | 11 |
0
|
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 84
|
|
14.11.2015, 22:30 [ТС] | 12 |
Я могу показать код, но смысла будет мало. Сама задача взята из региональной олимпиады 2013-2014 годов, вот её решение(самая последняя). По сути мне нужно два списка смежности(какому человеку кто подчинён) превратить в отрезки(какие "рядовые" прямо или косвенно подчиняются данному человеку, а так как они идут подряд, нам надо хранить только первого рядового и последнего). Для этого я запускаю из корневого узла функцию построения отрезка, которая в процессе работы для каждого подчинённого, имеющего своих подчинённых, запускает функцию уже для него. То есть я просто осуществляю поиск в глубину с немного расширенным функционалом. Без понятия, как можно без этого получить отрезки.
Код, кстати говоря, вроде бы рабочий, но на больших тестах программа выдаёт ошибку из-за слишком большой глубины рекурсии. А если мне надо память для функции выделить, что делать? Не совсем понимаю этот момент... Добавлено через 2 минуты Проблема в том, что я сдаю код программы, а не экзешник, так что манипуляции с компилятором мне не помогут. ![]()
0
|
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
|
|
14.11.2015, 22:59 | 14 |
0
|
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
|
|
14.11.2015, 23:06 | 16 |
0
|
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 84
|
||||||
14.11.2015, 23:56 [ТС] | 18 | |||||
Если вам так будет легче, вот код построения отрезков для одного из списка смежности. Если одной функции не хватает, то могу скинуть вообще всю программу, хотя вопрос у меня конкретно по функции.
Кликните здесь для просмотра всего текста
В этом деле я полный неуч, признаю. У меня вылетает программа из-за слишком глубокой рекурсии, насколько я понял. Но в функции у меня никаких массивов не объявляется, так что я не очень понимаю, что надо делать с помощью malloc. Буду очень благодарен за помощь. ![]()
0
|
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
|
|
15.11.2015, 00:10 | 19 |
Diplomate, а на какой строке падает программа?отладчиком не отлавливали? И можно ещё код класса для объекта a привести здесь?
0
|
![]() |
||||||
15.11.2015, 08:34 | 20 | |||||
Из расчёта:
int == sizeof( void * ) == 4 Получаем: Твой пример: 6 * 4 = 24 байта на функцию. Мой пример: 2 * 4 = 8 байт на функцию. Экономия 60% или 16 байт.
1
|
15.11.2015, 08:34 | |
15.11.2015, 08:34 | |
Помогаю со студенческими работами здесь
20
Увеличение размера массива из элементов собственного класса Увеличение размера стека Постепенное увеличение размера дива и размера шрифта вложенного текста
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |