Меню

Готика 2 ошибка stack overflow


  • 2.749
  • 0

Наконец-то дождались — «Baldur’s Gate III» покидает ранний доступ, и в августе 2023 выходит в полноценный релиз, о чём стало известно на церемонии «The Game Awards 2022». С момента выхода игры в…


  • 1.790
  • 0

Вчера прошла ежегодная церемония награждения проектов в индустрии компьютерных игр и киберспорта. Самую главную награда — «Игра года» забрала игра «Elden Ring» от японских разработчиков…


  • 5.130
  • 1

На сегодняшнем мероприятии «Ubisoft Forward» была анонсированна новая часть вселенной «Assassin’s Creed» под названием «Mirage». В роли протагониста будет Басим ибн Исхак, играющие в «Assassin’s…


  • 7.764
  • 4

Ещё в конце января этого года компания анонсировала проект под кодовым названием «Золотой Накер». Некоторые карты этой тематики были добавлены в сам «Гвинт», для подогревания интереса. И вот…

  • Автор темы

    TuvinID

  • Дата создания

    18 Июн 2019

18 Июн 2019

Добежали с Ларесом до магов воды, он стоит ждет около входа в раскопки, я частенько собираю всех по одному кто есть у храма и вожу к нему, он чистить и мне опыт идет… а тут такая ошибка…… что делать??? вылетело из за ошибки out of memery, обычно такого не бывает так как патч на 4 гб стоит…. а при следующих загрузках Overflow и хоть тресни…

over.jpg

123.jpg

Последнее редактирование модератором: 18 Июн 2019

18 Июн 2019

Как на счёт сейв прикрепить?

Вечером скину, реально поправить сейв?

18 Июн 2019

@TuvinID, судя про скриншоту сломался сейв, только откат на рабочий сейв поможет.

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

18 Июн 2019

просто не париться и использовать другие сейвы?

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

1) Проблемы с орками и локациями с допуском через них

Правильный порядок на 66+ сборках:
1. Зарабатываем репутацию орков, чтобы нас пустили к Ур-Траллу, но не сдаём задание на репутацию.
2.* Проходим цепочку шамана за ареной или хотя-бы доходим до последнего задания — убить демона на болотах (главное — взять само задание до того, как сдан квест на репутацию).
После взятия задания на демона квест на репутацию можно смело сдать.
Если вы уже сдали задание на репутацию ДО ЭТОГО, но задание на демона взять не успели ПРОСТО ПРОПУСТИТЕ ЭТОТ ПУНКТ. Вы потеряете немного опыта за то, что этот квест пройдёт мимо, но ничего не поменяется.
3. Убиваем демона на болотах (бывший лагерь братства спящего). Для продолжения цепочки убивать его придётся в ЛЮБОМ СЛУЧАЕ, независимо от того, взят на него квест или нет. НО е

сли накосячить с 1-2 пунктами

, то вам никто на необходимость убийства демона даже не намекнет.
4. Довести цепочку по поиску паладинов до стадии, когда напрямую скажут, что они у орков. Правильный порядок разговоров: Гаронд — Тальбин — Йерган. Иметь

минимум

50 риторики при разговоре с Ур-Траллом.
4+* Желательно выполнять до 4ой главы, иначе Йергана скорее всего убьют орки на стоянке добычи руды. Его можно:

  • попытаться защитить (что сложно)
  • оживить дыханием смерти если он ещё не облутан (См. раздел механики)
  • Как включить марвин смотри тут. Код на Йергана:
    [*]VLK_4110_Jergan

  • пропустить этот этап с помощью ГВЕ).

5. Проходим шахту. Сперва выполняем все хотелки узников. Их дохрена; самые проблемные моменты:

  • книга риторики — берётся из сундука в доме Фернандо, даже если он в тюрьме а сундук вы уже обчищали до этого. Кстати, их у него в доме 2.
  • книга про звёзды, купленная у Саландрила или забранная из свободной шахты
  • кучка золотой крошки. Если вы из-за своей жадности выкопали и переплавили всё золото вселенной до последней крошки, то это ваши проблемы, идите ищите (спойлер — скорее всего не найдёте, т к все жилы игры обычно встречаются до этого и жадными до золота готоманами пылесосятся под ноль).
    План B — выполнить квест «золото скатти» в 4 главе.
    План C — идти выбивать золото по крупицам из всего что движется.
    План D — использовать МАРВИН (ищите сами, в теме по ссылке всё есть)
  • 65 риторики
  • доспех Венцеля — часто багается при загрузке сохранения иггры с уже подобранным доспехом и превращается в обычный доспех паладина, который Венцель не принимает. Решение — сдать доспех без дополнительных загрузок. Если уже сохранились и переигрывать ни в какую — марвин

    или ГВЕ.
    Далее чистим низ шахты. Программа минимум — убитый демон снизу + убитый страж сферы.

5+* Если страж сферы на половине хп начинает беспощадно спамить скелетами всю пещеру — ставим последний фикс ОТСЮДА.
6. Чистим храм спящего. Желательно не оставлять необлутанные скелеты, иначе заного войти в храм спящего возможно вы не сможете (легендарная ошибка «Stack overflow»), а посещать его ещё раз вам придётся.
7. Идём в долину теней. Нет, раньше в неё попасть не получится. Да, порядок поменяли. Увы, игре пофигу, в каком каком устаревшем гайде вы вычитали, что всё иначе. Теперь порядок именно такой.

.
2) Скелет страж сферы на низком здоровье начинает спамить всё вокруг скелетами. Фпс падает, скелетов становится слишком много.

Это баг чистой 66.2. Ставь последний фикс 66.2, найти его можно ТУТ

3) Ватрас не учит регенерации.

Теперь регенерация маны передана классовым учителям + у галахарда (только дороже).
Регенерация выносливости передана учителям боевых гильдий.
Учителя регенерации жизни ищите в логове Масиаф.

4) Не могу создать руну, хотя все ингридиенты есть.

Проверьте качество рунного камня. Их целых три. Возможно, вам нужен рунный камень покруче. Читаем тут!

5) Хп уменьшается само, противоядия не помогают. Чесслово, я ничего не делал. Только побегалпоплавал голышом или меня укусил зомбичумная крыса.

Это, мой друг, болезнь. У неё есть особый значок в статус-баре (это около полоски выносливости), висит она 1000 секунд, жрёт хп. Лечится чистым спиртом, о чём красноречиво говорит описание этого самого спирта. Больше не плавай в ледяной воде, а то ещё не то схватишь :). Для справки — начальные доспехи вроде рваных обносков, юбки послукшника или одежды горожанина выносливость больше не кушают, бегайплавай в них.

6) У меня не работает кража.

Поставьте последний фикс на 66.2 он ТУТ, в самом конце.

7) Не могу ни скем разговаривать, никто не реагирует, что я их бью после загрузки

Именно с этим связано то, что запретили быстрое сохранение и загрузку. К Вам кто-то обращается, Вы нажали сохраниться (можно успеть), и после загрузки перестали с Вами разговаривать. Проблема в том, что скрипт диалога уже отработал (начался диалог), а скрипт запрета на сохранение не успел. Результат: разрушенное сохранение!
Решение: откат, загрузка предыдущих сэйвов
Касается ВСЕХ сборок!

8) Масиаф, не хотят посвещать в тени или приоры не хотят драться на арене, анимация идёт, а они не дерутся

решается за 7 секунд:
1) Тени: Идём ко обоим приорам снизу, открываем диалог, закрываем, возвращаемся в точку где нас посвятят в тени
2) Анимация закончилась, приоры стоят на месте, решение такое же

9) Крайт

В данный момент механика крайта несовершенна.
Вот что необходимо знать:
1) Игра «видит» крайта как призванного, то есть, вы можете посмотреть его статы, он получает опыт, а так же блокируется возможность призвать крайта повторно, ТОЛЬКО в промежуток времени после его призыва и до момента смерти крайта (любого, об этом позже) ИЛИ до загрузки игры.
2) Отсюда возникает простой багдырка в механике: После загрузки игры, в которой при сохранении крайт был жив, игра перестаёт его «видеть», хотя при этом он остаётся живой, всё так же бегает за вами и приносит опыт с убийств. При попытке перепризвать крайта призывается второй (третий, если вы решили «повторить» фокус с загрузкой уже с двумя крайтами и так далее).
3) Опыт с убийств крайт даёт полный. Получает же он опыт только с убийств (за квесты он опыта НЕ получает) и только если игра его «видит» как призванного.
4) Опыт крайта сохраняется, как и его уровень. Максимальный же его уровень ограничен, как и у ГГ, только доступным опытом на локациях и вашим желанием его этим опытом кормить.
5) Ману крайт не тянет, время его действия не ограниченно. Дохнет после того, как был убит (привет, кОпетан), был ударен игроком или попытался ударить босса.

10) Перестала работать акробатика

Сейчас можно отключать акробатику: кнопочка «T» — латинская или «Е» — русская
Выключаем/включаем по настроению или желанию

11) Коготь не улучшается душами, хотя души есть.

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

В мире программистов ошибка «stack overflow» очень известна благодаря тому, что этот вид ошибки довольно распространен. А сам термин «stack overflow» известен еще больше, чем ошибка, благодаря одноименному англоязычному ресурсу «StackOverflow». Это сообщество программистов международного масштаба, и еще куча всего интересного. Поэтому не нужно путать ошибку «stack overflow» и веб-ресурс с таким же названием. В нашей статье речь пойдет об ошибке.

Ошибка «stack overflow» связана с переполнением стека. Она появляется в том случае, когда в стеке должно сохраниться больше информации, чем он может уместить. Объем памяти стека задает программист при запуске программы. Если в процессе выполнения программы стек переполняется, тогда возникает ошибка «stack overflow» и программа аварийно завершает работу. Причин возникновения подобной ошибки может быть несколько.

Ошибка «stack overflow»

Нужно отметить, что ошибка «stack overflow» не связана с конкретным языком программирования, то есть она может возникнуть в программах на Java, C++, C, C# и других компилируемых языках.

Причин ее возникновения может быть несколько. К самым распространенным причинам относятся:

  • бесконечная рекурсия;

  • глубокая рекурсия;

  • проблемы с переменными в стеке.

Бесконечная рекурсия и ошибка «stack overflow» 

Бесконечная рекурсия редко возникает самостоятельно и по неизвестным причинам. Обычно программист:

  • забывает прописывать условие для выхода из рекурсии;

  • пишет неосознанную косвенную рекурсию.

Самая частая причина из категории «бесконечной рекурсии» программист забывает прописывать условия выхода или же прописывает, но условия выхода не срабатывают.

Вот как это выглядит на С:

int factorial (int number)

{

  if (number == 0)

    return 1;

  return number * factorial(number — 1);

}

В описанном примере прописаны условия выхода из рекурсии, однако они никогда не сработают, если «number» будет отрицательным. Поэтому через несколько миллионов вызовов стек будет переполнен и возникнет ошибка «stack overflow». В некоторых языках программирования предусмотрена «защита» от таких рекурсий. В них рекурсия из конца функции конвертируется в цикл, что не будет расходовать стековую память. Но подобная «оптимизация» вызовет другую, менее опасную проблему «зацикливание».

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

В коде это выглядит так:

 int Object::getNumber(int index, bool& isChangeable)

{

  isChangeable = true;

  return getNumber(index);

}

int Object::getNumber(int index)

{

  bool noValue;

  return getNumber(index, noValue);

}

Глубокая рекурсия и ошибка «stack overflow»

Глубокая рекурсия — это такая рекурсия, которая имеет свое окончание через определенное время, поэтому она не бесконечная. Однако памяти стека не хватит для завершения такой рекурсии, поэтому ошибка «stack overflow» обеспечена. Обычно такая ситуация заранее просчитывается программистом,поэтому ее можно решить. Например, можно:

  • отыскать другой программный алгоритм для решения поставленной задачи, чтобы избежать применения рекурсии;

  • «вынести» рекурсию за пределы аппаратного стека в динамический;

  • и другое.

Глубокая рекурсия выглядит так:

void eliminateList(struct Item* that)

{

    if (that == NULL)

        return;

    eliminateList(that->next);

    free(that);

}

Проблемы с переменными в стеке и ошибка «stack overflow»

Если взглянуть на популярность возникновения «stack overflow error», то причина с проблемными переменными в стеке стоит на первом месте. Кроется она в том, что программист изначально выделяет слишком много памяти локальной переменной.

Например:

int function() {

     double b[1000000]

}

В данном случае может возникнуть такая ситуация, что массиву потребуется объем памяти, который стек не способен будет обеспечить, а значит, возникнет ошибка «stack overflow». 

Заключение

Ошибка «stack overflow» возникает довольно часто. Каждый конкретный случай ее возникновения требует собственного решения. Одна причина объединяет возникновение такой ошибки — невнимательность программиста. Если «stack overflow error» возникла, значит, программист где-то что-то упустил или не доглядел.

Купил готику 2 в стиме, затем по инструкции установил все нужные патчи, но после запуска игры выдается большое окно с этой ошибкой. Затем решил скачать репак с уже готовыми патчами и дополнениями, ну и там такая же ошибка (уже перепробовал несколько репаков). Кто знает, что делать? Win 10, а на 7 вроде не было такой проблемы

MrWorld
http://steamcommunity.com/app/65540/discussions/0/620695877175405108/ вот там посмотри! а вообще думаю не надо патч ставить)

MrWorld

и вот еще нашел что

mister.kirianow
Я уже игру в стиме вернул) Так что скачаю репак ещё раз и проверю, но точно не знаю, будет ли у меня файл GameOverlayRenderer.dll

mister.kirianow
Ну ролик полный абсурд

порыскай в нете что там пишут? не отчаивайся

MrWorld
Не знаю почему, но на Windows старше XP Готика очень не любит длинные пути с пробелами и кириллицей. У некоторых проблема решается, если игру просто установить в корень диска (C:Gothic). Также проверь, какие именно патчи ты ставил — для оригинальной второй части или с дополнением Ночь ворона. StarForce сносится патчем gothic2_fix-1.30.0.0 для оригинала и gothic2_fix-2.6.0.0-rev2 для Ночи ворона. Ну и так как у тебя десятая винда, проверь, все ли дрова она тебе воткнула и правильно ли это сделала. Эти три шага решают большинство общих случаев, если нет, то проблема глубже.

ArMaGeddon_AJ
Сейчас попробую переустановить в корень диска С

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

MrWorld
Какие патчи ставил? И какая версия игры, оригинал или ночь ворона?

ArMaGeddon_AJ
В общем я скачал этот репак http://rus torka.com/forum/viewtopic.php?t=223718 там в лаунчере есть версия с патчами и без и обе не работают

ArMaGeddon_AJ
С репаком же вроде всё нормально?

Ну че епта,как решить это

Напишите кто справился с проблемой?

https://github.com/dosinabox/g2_steam_fix/releases/tag/12.21
Малый .exe отсюда скачай и запусти с указанием пути на папку готики.
(3 часа убил на поиск)
Если скачать более современный файл, то там отсутствует русский перевод.
Так что качать стоит именно то, что по ссылке.

И это ещё не всё! (прошлая ссылка дала только запустить игру)
Тут целая эпопея с этой ошибкой. Каждый отдельный case разбирают и находят решение!
https://rpgrussia.com/tags/access-violation/
Так что пробегаетесь по темам и находите свою вариацию ошибки.
Да прибудут с вами Терпение и Удача)

Авторизуйтесь, чтобы принять участие в обсуждении.

SEVI

31 / 30 / 2

Регистрация: 26.01.2010

Сообщений: 124

Записей в блоге: 1

1

27.01.2014, 00:17. Показов 4272. Ответов 40

Метки нет (Все метки)


Доброго времени суток!
Дело в том, что при объявлении массива размером 106

C++
1
int a[1000000];

выскакивает при запуске (после компиляции даже) stack overflow, еще до того как туда будут заноситься элементы. Дебаггер указывает именно сюда… Тем более если сделать 105, то все работает… Прошу объяснить как это обойти… Заранее спасибо.
Вот весь код (без кода функции двоичной сортировки quickSortR)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    int n, k, i, s=0;
    int a[100000];
    ifstream f1("E.dat");
    ofstream f2("E.sol");
    f1 >> n >> k;
    for (i = 0; i < n; i++) {
        f1 >> a[i];
    }
    quickSortR(a,n-1);
    for (i = k; i < n; i++) {
        s = s + a[i];
    }
    f2 << s;
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

27.01.2014, 00:17

Ответы с готовыми решениями:

Ошибка «stack overflow». Разложение функции в ряд Тейлора
Задание: рекурентно реализовать разложение ф-ии {sin}^{2} по ряду Тэйлора. Выдает ошибку…

Быстрая сортировка: ошибка «Stack overflow»
Не понмаю, пишет STACK OVERFLOUDED!!!!
не знаю в чем проблема.
#include &lt;iostream&gt;
#include…

Ошибка: «Unhandled exception: Stack cookie instrumentation code detected a stack-based buffer overrun»
Не могу понять почему значение ChoiceOfPlayer меняется и почему NumberOfRow и NumberOfColumn всегда…

В зависимости от времени года «весна», «лето», «осень», «зима» определить погоду «тепло», «жарко», «холодно», «очень холодно»
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,…

40

320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 00:26

2

А в настройках компилятора ничего не меняли? Нормально принял VC++2012 ваш код. Я сам создавал массивы большей длины, тема до боли знакома. Но вы вроде к пределам возможностей 32 разрядной системы и близко не подошли.



0



31 / 30 / 2

Регистрация: 26.01.2010

Сообщений: 124

Записей в блоге: 1

27.01.2014, 00:35

 [ТС]

3

mustimur, а вы в коде меняли на 1000000? А то я оставил случайно 100000… У меня VC++2013. Настроек не менял…



0



238 / 49 / 6

Регистрация: 10.06.2012

Сообщений: 268

Записей в блоге: 1

27.01.2014, 00:36

4

Проверьте, возможно где-то в файле есть число, большее чем 231-1 (2 147 483 647). Либо n>106.



0



31 / 30 / 2

Регистрация: 26.01.2010

Сообщений: 124

Записей в блоге: 1

27.01.2014, 00:38

 [ТС]

5

Craw, да вот в том то и дело что чисел 6. И они все не привышают 100. И проблема начинается еще до заполнения. И как я говорил проблема пропадает, когда я меняю с 106 на 105



0



mustimur

320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 00:45

6

Цитата
Сообщение от SEVI
Посмотреть сообщение

mustimur, а вы в коде меняли на 1000000? А то я оставил случайно 100000… У меня VC++2013. Настроек не менял…

Да тоже начал вылетать, но если записать так то работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
 
int main()
{
    int n, k, i, s=0;
    int *a=new int[1000000];
    ifstream f1("E.dat");
    ofstream f2("E.sol");
    f1 >> n >> k;
    for (i = 0; i < n; i++) {
        f1 >> a[i];
    }
    //quickSortR(a,n-1);
    for (i = k; i < n; i++) {
        s = s + a[i];
    }
     f2 << s;
     delete [] a;
     return 0;
}

Добавлено через 4 минуты
16 строчку раскоментировать забыл



0



31 / 30 / 2

Регистрация: 26.01.2010

Сообщений: 124

Записей в блоге: 1

27.01.2014, 00:47

 [ТС]

7

mustimur, хм… интересно… а почему же тогда не работает тот вид записи… Спасибо! Учту…
Может я ошибаюсь, но этот вид записи используется при динамическом программировании… И получается память выделяется по мере заполнения?



0



320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 00:54

8

Цитата
Сообщение от SEVI
Посмотреть сообщение

Может я ошибаюсь, но этот вид записи используется при динамическом программировании… И получается память выделяется по мере заполнения?

Да это динамический массив, но память по него выделяется полностью и сразу в момент определения, в данном случае когда программа доходит до 9 строчки, а освобождается на 21 строчке.



0



SEVI

31 / 30 / 2

Регистрация: 26.01.2010

Сообщений: 124

Записей в блоге: 1

27.01.2014, 01:10

 [ТС]

9

mustimur, кстати говоря у меня работает только без

C++
1
delete [] a;



0



320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 01:15

10

А с ней ошибку выдает? Это строчка освобождения памяти выделенного под массив. В данном случае не обязательна так память освободится после выполнения программы, но если ты допустим организуешь цикл объявление, то это чревато утечками памяти



0



🙂

Эксперт С++

4773 / 3267 / 497

Регистрация: 19.02.2013

Сообщений: 9,046

27.01.2014, 08:30

11



1



320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 10:35

12

Цитата
Сообщение от Tulosba
Посмотреть сообщение

Должно быть полезно Почему прога может зависать при инициализации массива

А думаете целесообразно менять размер стека? Я не рискнул бы давать такой совет, лучше память выделять динамически на кучи.



0



320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 10:46

14

Цитата
Сообщение от Tulosba
Посмотреть сообщение

Я и не рекомендую менять этот размер.

Извините не внимательно прочел , просто общая мысль той темы изменение размера стека. Вы то как раз даете рекомендацию аналогично моей



0



🙂

Эксперт С++

4773 / 3267 / 497

Регистрация: 19.02.2013

Сообщений: 9,046

27.01.2014, 10:49

15

mustimur, решений проблемы может быть несколько. Самое простое — изменить размер стека, но при этом оно не самое правильное.



0



Эксперт С++

4978 / 3085 / 456

Регистрация: 10.11.2010

Сообщений: 11,164

Записей в блоге: 10

27.01.2014, 11:27

16

SEVI, что тебе мешает выделить память под массив динамически?
Очевидно же что не хватает стековой памяти.



0



320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 11:27

17

Цитата
Сообщение от Tulosba
Посмотреть сообщение

mustimur, решений проблемы может быть несколько.

Я это прекрасно понимаю.

Цитата
Сообщение от Tulosba
Посмотреть сообщение

Самое простое — изменить размер стека, но при этом оно не самое правильное.

И тоже ясно, поэтому такой совет и дал.
Сформулирую иначе есть случаи в которых менять размер стека целесообразно по вашему? (если можно пример)



0



🙂

Эксперт С++

4773 / 3267 / 497

Регистрация: 19.02.2013

Сообщений: 9,046

27.01.2014, 12:15

18

Цитата
Сообщение от mustimur
Посмотреть сообщение

есть случаи в которых менять размер стека целесообразно по вашему?

Если есть время и возможность переписать код, не увеличивая размер стека, то лучше так и сделать.
Иначе:
1. Когда есть готовая программа, требующая бОльшего стека.
2. Использование памяти на стеке быстрее, чем частое выделение/освобождение в куче. Хотя даже в этом случае можно выделить достаточный буфер в куче один раз и использовать его. Т.е. по сути сделать свой стек

с блекджеком

в куче.



0



320 / 225 / 74

Регистрация: 22.11.2013

Сообщений: 865

Записей в блоге: 1

27.01.2014, 12:59

19

Цитата
Сообщение от Tulosba
Посмотреть сообщение

Если есть время и возможность переписать код, не увеличивая размер стека, то лучше так и сделать.

Спасибо, в принципе так и думал



0



15 / 15 / 7

Регистрация: 20.11.2013

Сообщений: 92

27.01.2014, 16:01

20

Цитата
Сообщение от Tulosba
Посмотреть сообщение

mustimur, решений проблемы может быть несколько. Самое простое — изменить размер стека, но при этом оно не самое правильное.

Скажите, пожалуйста, почему изменять размер стека не самое целесообразное решение? И почему его лучше вообще не трогать? Если я правильно понимаю, то в защищенном режиме процессора ОС(в частности Windows 32bit), предоставляет памяти 4Гб, и если речь идет об объектах разумных размеров (скажем, до 100 мб), то для повышения быстродействия можно было бы использовать увеличенный стек, повысив тем самым скорость работы в 2 раза, по сравнению с кучей? Тогда по каким причинам так не поступают?



0



0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Готика 2 ошибка error message
  • Готика 2 ошибка 255