Автор
|
Тема: Есть интересный вопрос!!!
|
Vovan |
опубликован 12-12-2001 19:47 MSK
Есть одно недоразумение. У меня стоит Windows XP (если это важно) и Visual C++ 6. Я сделал одну небольшую программу, Когда я выбираю Built->Set Active Configuration и ставлю там DEBUG то всё работает нормально, но когда я ставлю Release и компилирую всё занова, то моя программа начинает работать неправильно. Не буду вдаваться в подробности, но похоже в ней половина условий или bool переменных работают неправильно. Программа не делает ничего такого, лишь читает данные из строки CString, переводит их в char, а потом анализирует. Это первый такой случай за несколько лет программирования. Пожалуйста помогите разобраться в чём дело, ведь немогу же я распространять дебагерные версии своих программ!
|
Kir1
|
опубликован 13-12-2001 12:43 MSK
Если я не ошибаюсь, то подобные проблемы чаще всего возникают, если вы забываете инициализировать переменные, тк в отладочной версии, это происходит автоматом, а в релизе нет...можете почитать подробнее в МСДНе (Compiler Reference) о различных ключах компилятора... |
Flex Ferrum
|
опубликован 13-12-2001 13:36 MSK
Кроме того, никогда не надо ставить реальные условия в ASSERT'ы. В том смысле, что там должны стоять только предположения, без которых программа может корректно функционировать. Пример того, как не надо делать:ASSERT(OpenFile(fileName)); В релиз-версии эта конструкция просто проигнорируется. |
DemonM
|
опубликован 17-12-2001 18:04 MSK
Оптимизатор может глючить, попробуй его отрубить |
mishootka
|
опубликован 17-12-2001 18:17 MSK
Глянул я на то, как вы пишете, не мудрено, что в релизе проги валяются. К примеру, встречаются циклы: for (int x; x < 255; x++) { ... } которые в дебаге крутятся за милую душу, а в релизе выполняются "от забора и до обеда". Со временем таких ошибок становится меньше, но иногда себе не перестаешь удивляться до сих пор. 8) |
bunz
|
опубликован 17-12-2001 19:09 MSK
Иногда такие проблемы возникают когда ты меняешь что-то в настройках отладочной версии и забываешь изменить то же самое в release. У меня такое часто бывает - что назвается дважды наступать на одни и те же грабли... |
SUnteXx
|
опубликован 18-12-2001 16:40 MSK
А может вы просто не выделяете или выделяете слишком мало памяти, к примеру, для строковой переменной! В Дебаге все пучком, что не выделили - веделится, ...! Проверьте, везде ли вы выдаелили нормальное количество памяти для переменной и не заслали ли в эту переменную больше чем можно! Это, одна из распространенных ошибок! Выделил 5 байт, а заслали 6. И все, проге хана, все глючит, ... Так что проверьте! |