Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,423
#1

Создать отдельный стек для функции - C++

29.11.2011, 22:26. Просмотров 2402. Ответов 44
Метки нет (Все метки)

необходимо. Мне надо вызывать рекурсивную функцию; при этом происходит переполнение стека, мне бы хотелось бы это контролировать.
g++ не поддерживает обработку SEH- исключений, отловить переполнение стека, как, впрочем и другие я не могу. Программа падает просто и всё.
вызов рекурсивной функции в отдельном потоке с созданным и, как следствие, контролируемым стеком (билиотека pthread) рассамтриваю только в качестве ПОСЛЕДНЕГО варианта.

Спасибо, кто откликнется

Добавлено через 48 минут
Только что в отладчике OllyDbg исполоьзовал такой приём: выделял объём памяти и вручную менял регистр ESP, чтобы он указывал на эту память и всё получалось, эта память работала как стек.
Попробую такую идею замутить с аммесблерными вставками, они нужны будут для изменения ESP, если чё, отпишусь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 22:26     Создать отдельный стек для функции
Посмотрите здесь:

Создать отдельный управляемый поток для бесконечного процесса - C++
Пишу простую визуализацию броуновского движения в С++ Builder-e рисуя кружочки на имейдже. Подскажите самый простой пример как запихнуть...

Функции для записи данных в отдельный файл txt - C++
Прошу помочь с такой проблемой:какие функции используются для записи данных,в моём случае массива данных ,в отдельный файл txt Всем...

создать стек для с++ - C++
сформировать стек не более чем из 5-ти элементов. Начиная с 6-го введенного символа головной элемент "выталкивается" из очереди и выводить...

Создать стек, для суммирования чисел - C++
Столкнулся с заданием в котором нужно создать стек при этом необходимо реализовать разбор строки для суммирования чисел. Они представляются...

Различные функции, для которых можно создать массив указателей на функции - C++
Придумайте не менее 3-х различных функций, для которых можно создать массив указателей на функции.

Функции в отдельный файл - C++
Всем доброго времени суток! У меня есть основной файл в нем main и парочка больших функций. Я вынес эти две функции в отдельный файл...

Перенести функции в отдельный файл - C++
Сейчас у меня всё в одном файле Source.cpp, как перенести все функции в другой файл Header.h(или какой-нибудь другой), где его создать?...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 13:10     Создать отдельный стек для функции #41
Цитата Сообщение от kravam Посмотреть сообщение
В частности, я не возьмусь определять глубину стека до определённого момента ни примерно, никак
Ставь 100. Если после запуска глубины не хватает, ставь 1000. Потом 10000. Любая вменяемая функция может 10000 раз рекурсивно вызваться. В противном случае ты используешь стековую память там, где нужно использовать динамическую.
Потом 100000 поставь, если приспичит.
Можно увеличить размер стека, если это действительно нужно.
Но писать собственный стек функций (на ассемблере подменяя ESP (OMG) ), чтобы отловить ошибку с бесконечной рекурсией... мягко выражаясь - маразм.

Цитата Сообщение от kravam Посмотреть сообщение
хорошо бы использовать счётчик да глубину рекурсии не определить
ВСЕГДА известная расчётная глубина. До одного-двух порядков она известна ВСЕГДА. В противном случае ты кидаешься программировать даже не пытаясь проектировать.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
02.12.2011, 13:20     Создать отдельный стек для функции #42
Цитата Сообщение от Deviaphan Посмотреть сообщение
Любая вменяемая функция может 10000 раз рекурсивно вызваться.
под вменяемостью надо понимать, что у нее на стеке выделяется не очень много данных
те что у нее нет больших локальных нестатических массивов итп
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 13:23     Создать отдельный стек для функции #43
Цитата Сообщение от alex_x_x Посмотреть сообщение
под вменяемостью надо понимать
Ну да, именно это.)
Рекурсивные функции с большим количеством данных на стеке, заставляют задумываться о вменяемости программиста.)
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,423
02.12.2011, 14:04  [ТС]     Создать отдельный стек для функции #44
Цитата Сообщение от Deviaphan Посмотреть сообщение
Но писать собственный стек функций (на ассемблере подменяя ESP (OMG) ), чтобы отловить ошибку с бесконечной рекурсией... мягко выражаясь - маразм.
прошу больше меня не беспокоить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 14:15     Создать отдельный стек для функции
Еще ссылки по теме:

Создать стек - C++
Задание: Создать стек. Написать функцию, определяющую, есть ли заданная компонента в стеке. В программу включить меню работы с...

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

Создать стек символов - C++
Нужно создать стек для символов, функции ввода и вывода элементов стека и указывать, если введён эталонный символ. Всё то тип-топ, если...

Создать новый стек - C++ - C++
нужна помощь Даны очеpедь и стек целых чисел. Из элементов стека меньших минимального элемента очеpеди сфоpмиpовать новый стек. ...

Создать новый стек - C++
Ребята нужна помощь Даны очеpедь и стек целых чисел. Из элементов стека меньших минимального элемента очеpеди сфоpмиpовать новый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deviaphan
02.12.2011, 14:15     Создать отдельный стек для функции
  #45

Не по теме:

Не верю в искренность просьбы.

Yandex
Объявления
02.12.2011, 14:15     Создать отдельный стек для функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru