![]() |
|
|
![]()
|
|
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
У меня программа обрабатывает некоторые данные, фактически одномерный массив данных. Результатом является список найденных участков, отвечающих некоторому условию. Так вот если программу скомпилить в Release-mode - безо всякой отладки и без CodeGuard, то прога находит энное количество таких участков. А если также в release-mode, но с CodeGuard, то на таких же данных находит гораздо меньше участков! Как такое возможно? Как CodeGuard может влиять на вычисления?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| ksili |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Вы не поверите! Через столько времени я наконец-то разобрался с этой проблемой.
CodeGuard действительно может повлиять на алгоритм работы, но только косвенно. У меня это произошло только потому, что я сам прокосячил. Дело было так. В одной функции была объявлена и использовалась булева переменная:
В процессе правки строку
я нечаянно закомментировал. Именно из-за этого прога с CodeGuard'ом работала не так как без него. В программе без него при входе в функцию переменная check всегда инициализировалась по-умолчанию как false (и все работало как надо). А CodeGuard видимо эту неявную инициализацию запрещал и эта переменная была не обязательно false, а могла оказаться true и без соблюдения той кучи условий. Что интересно, true в таких случаях она становилась не хаотически, а всегда одинаково, т.е. результат в точности повторялся. В общем раскомментировал check = false; и работать стало одинаково и с CG и без него. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||
|
|||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Если ты не инициализировал переменную, то хоть с Guard хоть без него она могла принимать любые значения, это просто получалось так что на твоем ПК без guard было всегда false, на другом ПК могло быть иначе, это зависит от состояния оперативной памяти.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |