Блог пользователя DaurenMuratov

Автор DaurenMuratov, 14 лет назад, По-русски
Сегодня во время тестирование своего решения нашел одну интересную вещь. Когда я запустил код командой "g++ -O2 a.cpp", тестер показал  ошибку "CRASH EXCEPTION_STACK_OVERFLOW". После этого чтобы узнать где произошло ошибка запустил командой "g++ -g a.cpp"(debug). Но на этот раз решение не вывело никаких ошибок, наоборот дала правильный ответ на тест. Никак не могу понять в чем тут дело?  Повторял несколько раз, исход одинаковый. Если кто-нибудь раньше сталкивался с такой проблемой расскажите от чего же это могло быть и какое влияние имеет "-g" (debug) на компиляцию?
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
При разных уровнях оптимизации получаются разные программы. Например, при -O2 данные в памяти могут располагаться по-другому. Оптимизатор подвигал массивы - и выход за границу массива побил стек.
Зависит от конкретной программы.