![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: 1 Всего: 3 |
При запуске проги возникает ошибка (обнаружена ошибка. Приложение будет закыто …) я нажимаю на (отладка) , запускается Visual Studio 2005 и открывает мне код с Break Point’ом на этой строке :
str объявленна как CString str; в Debug все отл. Работает ! в чем может быть проблема ? сорри что не в том разделе ! Это сообщение отредактировал(а) DigitSphinx - 25.5.2007, 22:23 |
|||
|
||||
Hurricane |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 10.4.2007 Репутация: 6 Всего: 9 |
Так вот навскидку не скажу, что именно не так.
Разница между Debug и Release в том, что в Debug все объявленные переменные инициализирутся нулями, а в Release - нет, в них будет находится какой-то мусор. Проверь, есть ли где-то неинициализированные переменные. |
|||
|
||||
DigitSphinx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: 1 Всего: 3 |
Все разобрался !, проблема была в int’овской переменной !
Но теперь я вообще офигел , как в Debug’е работало . Потому что переменная берется с указателя
при запуске этот указатель пустой, (в конструкторе явно указанно)
По этому и вылизала ошибка типа “Access violation”. а в дебаге он игнорирует ошибку и работает по алгоритму , т.е. фигня ! P.S. Надо поразбираться ! Спасибо Hurricane, может в дебаге и работало потому что он инициализирует переменные нулями ! Это сообщение отредактировал(а) DigitSphinx - 26.5.2007, 00:36 |
||||
|
|||||
Ln78 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
В данном случае это непринципиально, но всё же уточню - не нулями, а фиксированными значениями, чередующимися парами нулей и единиц. Например, для целой переменной это значение 0xCCCCCCCC |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
то, что значение CC представляет из себя в бинарном виде "11001100", в данном случае не имеет никакого значения. все неинициализированные данные и "охранные зоны" забиваются CC для того, чтобы в случае перехода выполнения на данные, сразу сработало отладочное исключение - int 3, опкод которого и есть CC. ![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
[немного_оффтоп]
А не проще это сделать через атрибуты секций? Да и вообще очень специфичная ситуация. Разумней было бы забивать данными, более осмысленными с точки зрения данных, а не кода. ИМХО, конечно. [/немного_оффтоп] |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
![]()
более осмысленные с точки зрения данных значения(типа 0 или -1) могут скрывать ошибки "неинициализированности", с чем, собственно, и боремся... ![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Ну, во-первых DEP существует уже давно. Во-вторых, я в принципе не пойму - будет выброшено int 3 при нашей зверской (и так часто встречающейся ![]()
Юлин, а я думал наоборот. Хотя, конечно, такое объяснение гораздо логичнее ![]() ![]() Почему же на релиз обычно больше ругаются? ![]() |
|||
|
||||
Hurricane |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 10.4.2007 Репутация: 6 Всего: 9 |
Кстати - да, логично. Но почему-то больше запомнились случаи, когда дебаг еще кое-как хромал, а релиз вываливался по эксепшну. Или это просто психологический эффект? Пытаюсь сообразить, почему я написал про инициализацию нулями. Ничего в голову не приходит ![]() ![]() |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
В дебаге по другому расположены переменные в памяти, между ними может быть место для дебажных переменных итд, а в релизе включается оптимизация на полную, переменные сдвигаются поближе, меняются местами и небольшие вылезы за пределы массивов становятся гораздо заметнее
![]() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
в дебаге между переменными кладутся "охранные зоны", которые проверяются при выходе из области видимости объявленных переменных: если будет выход за пределы, отладчик будет "ругаться" - заметнее, imho, некуда... ![]() ps. надо отметить, что все вышесказанное относится к стековым переменным. глобальные заполняются нулями, а члены классов динамически выделенная память - значением CD. почему CD - х3, видимо, надо было как-то отделять мух от котлет... ![]() Это сообщение отредактировал(а) dumb - 30.5.2007, 11:54 |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
dumb, эти CD, CC - это конкретно к VC++ относится? Я сомневаюсь, что все компилеры следуют столь интуитивно понятным правилам
![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |