Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CodeGuard влияет на работу программы 
V
    Опции темы
ksili
Дата 15.4.2008, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



У меня программа обрабатывает некоторые данные, фактически одномерный массив данных. Результатом является список найденных участков, отвечающих некоторому условию. Так вот если программу скомпилить в Release-mode - безо всякой отладки и без CodeGuard, то прога находит энное количество таких участков. А если также в release-mode, но с CodeGuard, то на таких же данных находит гораздо меньше участков! Как такое возможно? Как CodeGuard может влиять на вычисления?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
ksili
Дата 31.5.2008, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Вы не поверите! Через столько времени я наконец-то разобрался с этой проблемой.

CodeGuard действительно может повлиять на алгоритм работы, но только косвенно. У меня это произошло только потому, что я сам прокосячил. Дело было так. В одной функции была объявлена и использовалась булева переменная:
Код

bool check;

.......

check = false;

....

if( /* тут куча условий */)
    {
     ....
     check = true;
    }
else if( /* тут тоже куча условий */)
    {
     ....
     check = true;
    }

В процессе правки строку
Код

check = false;

я нечаянно закомментировал. Именно из-за этого прога с CodeGuard'ом работала не так как без него. В программе без него при входе в функцию переменная check всегда инициализировалась по-умолчанию как false (и все работало как надо). А CodeGuard видимо эту неявную инициализацию запрещал и эта переменная была не обязательно false, а могла оказаться true и без соблюдения той кучи условий. Что интересно, true в таких случаях она становилась не хаотически, а всегда одинаково, т.е. результат в точности повторялся. 

В общем раскомментировал check = false; и работать стало одинаково и с CG и без него.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Artemon
Дата 31.5.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Если ты не инициализировал переменную, то хоть с Guard хоть без него она могла принимать любые значения, это просто получалось так что на твоем ПК без guard было всегда false, на другом ПК могло быть иначе, это зависит от состояния оперативной памяти.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.