"Stack overflow" как обойти?27.01.2014, 00:17. Показов 6661. Ответов 40
Метки нет (Все метки)
Доброго времени суток!
Дело в том, что при объявлении массива размером 106
Вот весь код (без кода функции двоичной сортировки quickSortR)
0
|
|||||||||||
| 27.01.2014, 00:17 | |
|
Ответы с готовыми решениями:
40
Stack overflow Stack overflow. |
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 27.01.2014, 16:14 | |
Сообщение было отмечено Убежденный как решение
Решение
1. стек должен быть непрерывным, в то время как для кучи такого требования нет. Непрерывный кусок памяти заданного размера найти иногда просто невозможно в силу фрагментирования памяти.
2. со стеком не реализовать логику случайного освобождения памяти (в терминалогии стека, есть только адрес его вершины). Нельзя освободить память из середины стека, не тронув вершину. 3. про скорость довольно сомнительно. Если есть много мелких объектов, которые нужно создавать/уничтожать, можно выделить пул и работать с ним.
5
|
|
| 27.01.2014, 17:41 | ||
|
0
|
||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||
| 27.01.2014, 18:02 | ||
|
0
|
||
|
Ушел с форума
|
|
| 27.01.2014, 18:51 | |
|
Ко всему написанному хотелось бы добавить, что в Windows ситуацию с
переполнением стека можно отловить через SetUnhandledExceptionFilter. Вот только радости от этого немного, т.к. в обработчике ничего серьезного выполнить не выйдет, ибо стековой памяти уже нет...
1
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||
| 27.01.2014, 18:56 | |||
|
а размер стека 1 Мб Добавлено через 3 минуты [ebp+x] или [esp-x] для стека [esi+x] для кучи где тут быстрее?
0
|
|||
| 27.01.2014, 19:00 | ||
|
Так какой вывод? для я себя сделал выбор в пользу кучи и динамической памяти (как и советует Tulosba), но по скорости я все таки проигрываю?
Добавлено через 47 секунд
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||
| 27.01.2014, 19:01 | |||
|
а при последовательном доступе даже выиграешь
0
|
|||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||
| 27.01.2014, 19:30 | ||
|
0
|
||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||
| 27.01.2014, 19:47 | ||
|
В общем, я просто хотел обратить внимание на то, что доступ к SS:SP был бы быстрее, чем к записи смещения для кучи в регистр и только потом чтения адреса оттуда, и просто поинтересовался, почему же в таком случае не делают просто шире стек. И ни с кем спорить вообще-то не планировал.
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||
| 27.01.2014, 19:54 | |||
|
сколько тактов занимает такая вот например команда lea eax,[esi+4*ecx]?????????
0
|
|||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
|||
| 27.01.2014, 20:05 | |||
|
0
|
|||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||
| 27.01.2014, 20:17 | ||
|
растактовку можешь по командам дать? или просто так говоришь? так кстати и не ответил сколько тактов занимает команда? Добавлено через 4 минуты кстати так ради смеха я не адрес записал а рассчитал значение ecx умноженное на 5 ( для этого правда значения из ecx в esi надо скопировать)
0
|
||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||
| 27.01.2014, 20:25 | ||
|
Все что я хотел сказать по этому поводу, я сказал, что вы мне пытаетесь сейчас доказать - ума не приложу. Какие-то куски псевдо асм кода кидаете не понятные, откуда-то с потолка взятые. По поводу тактов - да погорячился, назвав их тактами, но я имел ввиду именно шаги обращения, команды, если хотите. И причем тут 8086? Мы разве об архитектуре речь ведем или о том, что для доступа к памяти на стеке нужно всего лишь к sp обратиться, а к куче - сначала получить адрес, а потом с ним работать? Не понимаю ваших претензий, честное слово.
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||||
| 27.01.2014, 20:44 | ||||
|
могу он или передается в функцию или возвращается new а дальше работа по эффективности не отличается от стека или ты думаешь что адрес где то сидит мы его взяли добавили смешение считали значения для другого все заново повторили? так что утверждение что работа с кучей медленней чем работа со стеком, тем более в два раза, ложное
0
|
||||
|
|
|||||||
| 27.01.2014, 20:45 | |||||||
|
Раз уж начали офтопить и холиварить..
0
|
|||||||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
|
| 27.01.2014, 20:58 | |
|
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||||||||||||
| 27.01.2014, 21:15 | |||||||||||||
но зато здесь нет ограничений (в смысле они гораздо больше чем у стека) а в работе они практически одинаковы в нормальной программе никто не будет создавать и удалять массив миллион раз подряд
0
|
|||||||||||||
| 27.01.2014, 21:15 | |
|
Помогаю со студенческими работами здесь
40
Stack overflow
Stack Overflow в сортировке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
/ / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров)
. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|