![]() |
|
Модераторы: bsa |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
а это уже другой вопрос, я предложил SEH, если желаете - можете предложить свой вариант отлова нужного ТС исключения, я предложил SEH и по мне - так это полностью соответствует запросу ТС. Я и не собирался перечислять все возможные варианты. Это сообщение отредактировал(а) azesmcar - 4.5.2010, 17:15 |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 5 Всего: 10 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
но это не значит, что обращению к нулевому указателю надо писать в try-catch -е, все равно этот код платформозависим, а так он еще и станет настройкозависимым. Уж лучше __try ... __except Добавлено через 1 минуту и 6 секунд вообще как я уже писал - лучше избегать этого исключения, нежели ловить его. Это сообщение отредактировал(а) azesmcar - 4.5.2010, 17:18 |
|||
|
||||
| asp1rant |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 23.12.2009 Репутация: нет Всего: нет |
кончай холивар!!! вопрос в том, почему на этот раз исключение не бросается, а ведь раньше в 2008 было!
|
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
о каком исключении идет речь? о каком коде? я только что проверил, VS2010 ultimate при настройке Yes with SEH Exceptions (/EHa) ловит вот так
и без этой настройки вот так
не знаю как там себя Release Candidate ведет, но в release-е я не заметил отличий от VS2008 по этой части. Это сообщение отредактировал(а) azesmcar - 4.5.2010, 18:19 |
||||||
|
|||||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 5 Всего: 10 |
azesmcar, я проверял такой же код на RC1, все работает
asp1rant, покажи код который у тебя не работает, и напиши командную строку компилятора (последняя страница настроек) |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
2 azesmcar и Abyx - кончайте спорить, горячие финские парни
SEH - это механизм ОС Windows, try/catch - это языковая конструкция языка С++. __try/__except - это расширение языка (и С и С++) от MS (которое адаптировали к себе и другие производители компиляторов) для поддержки SEH. Т.е. try/catch не обязан как либо пересекаться с SEH - это совершенно независимые сущности. Однако производители компиляторов под Windows имеют право в своих реализациях этих компиляторов пересечь их любым удобным для них (и пользователей) способом - в частности научить try/catch перехватывать SEH (или не учить, как им захочется |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
может немного не в тему, но мне не понятно, почему этот код должен генерировать исключение?
нормальный, рабочий код. завершается, как и ожидалось, с Segmentation fault. откуда компилятору знать, что "t" указывает на NULL? |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
|
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
наверное, было бы не плохо. наверное все же от обоих(обеих?). это понятно. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Это системное исключение, которое генерится с помощью механизма аппаратных прерываний. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
||||
|
||||
| asp1rant |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 23.12.2009 Репутация: нет Всего: нет |
ок, вот код:
void clearHand( Hand* pHand1) { int i; ListCard* pListCard1, *pPrevListCard; pPrevListCard = pHand1->pListCards; if (pHand1->pListCards) pListCard1 = pHand1->pListCards->pNextList; else pListCard1 = NULL; for(i=0; i < pHand1->countCards; i++) { free(pPrevListCard); pPrevListCard = pListCard1; pListCard1 = pListCard1->pNextList; } free(pPrevListCard); pHand1->countCards = 0; pHand1->pListCards = NULL; } на итерации i =5 перед красной строчкой переменная pListCard1 = 0x00000000 {pCard=??? pNextList=??? } на строке pListCard1 = pListCard1->pNextList; VS тупо останавливает выполнение, нужно самому жать кнопку stop debugging. тот же код в 2005 студии бросает исключение. сам код уже давно исправлен, условие изменено i < pHand1->countCards-1, но студия то тупит(или я туплю). командные строки: /ZI /nologo /W3 /WX- /Od /Oy- /D "_MBCS" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Debug\Durak.pch" /Fa"Debug\" /Fo"Debug\" /Fd"Debug\vc100.pdb" /Gd /analyze- /errorReport:queue и /OUT:"E:\Sasha\study\3_course\ОС\курсовая\Durak\Debug\Durak.exe" /NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Debug\Durak.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"E:\Sasha\study\3_course\ОС\курсовая\Durak\Debug\Durak.pdb" /PGD:"E:\Sasha\study\3_course\ОС\курсовая\Durak\Debug\Durak.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |