Здравствуйте, гость ( Вход | Регистрация )
|
spumer |
13.7.2011, 21:51
Сообщение
#1
|
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: 0
|
Здравствуйте.
При попытке подкинуть кривой хостнейм, программа вылетала с крит. ошибкой. Затем я начал отлавливать это исключение и пытаться завершить процесс более-менее спокойно. Но к сожалению это приводит к отказу приложения и система его закрывает.
|
|
|
|
![]() |
|
spumer |
18.7.2011, 12:23
Сообщение
#2
|
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: 0
|
Все решилось довольно просто.
Как я понял, проблема возникала из-за использования моего недопиленного костыля: Видимо внутри себя он(resolver.resolve) что-то делал такое с этими указателями, что вызывало исключительную ситуацию. Я посмотрел на конструкторы udp::resolver::query, и обнаружил: Цитата basic_resolver_query( const protocol_type & protocol, const std::string & host, const std::string & service, resolver_query_base::flags resolve_flags = address_configured); Внес исправления: А в функции запроса, я сделал соответствующую проверку: Возник еще вопрос. Если я пытаюсь перед выходом из функции удалить объект ptr - ошибка. Если я пытаюсь использовать boost::scoped_ptr - ошибка. Не получается освободить ресурсы. У меня конечно есть идея: создать boost::shared_ptr объект, поместить его в класс MainWindow, а в этой функции лишь .. ну вы поняли. Вобщем переложить работу с памятью для класса SE_Query на умный указатель и вынести его за пределы функции. Ну а если в целом, то все работает. Осталось лишь утечки памяти отловить. Забыл: Цитата(spumer @ 18.7.2011, 15:13) Link перед выходом из функции удалить объект ptr Если пытаюсь удалить в блоке if(ptr->getLastError()), в конце самой функции конечно идет удаление этого объекта. |
|
|
|
spumer resolver 13.7.2011, 21:51
Iron Bug скорее всего, у тебя resolver.resolve(query) возвр... 13.7.2011, 22:18
spumer Цитата(Iron Bug @ 14.7.2011, 1:18) скорее... 13.7.2011, 22:50
Iron Bug в примерах везде ловится std::exception.
(наприме... 13.7.2011, 23:13
spumer Цитата(Iron Bug @ 14.7.2011, 2:13) в прим... 13.7.2011, 23:22
Iron Bug попробуй поставить флаг /EHsc и ловить std::except... 14.7.2011, 7:40
spumer Iron Bug, Спасибо. Буду читать материал по ссылкам... 14.7.2011, 14:19
Litkevich Yuriy Цитата(spumer @ 14.7.2011, 17:19) если эт... 14.7.2011, 18:49
spumer Цитата(Iron Bug @ 14.7.2011, 10:40) попро... 16.7.2011, 22:15
Iron Bug у меня под линюксом вот такой код
#include <io... 17.7.2011, 0:16
spumer Цитата(Iron Bug @ 17.7.2011, 3:16) у меня... 17.7.2011, 11:19
spumer Проделал след. опыт: в конце функции, в которой с... 17.7.2011, 17:23
Iron Bug по этим отдельным кускам ничего сказать нельзя. ош... 18.7.2011, 16:40
spumer Класс - http://paste.org.ru/?fp5vdp
Функция запрос... 18.7.2011, 17:26
Iron Bug а на входе что подаёшь?
host может оказаться нуле... 18.7.2011, 19:23
spumer Цитата(Iron Bug @ 18.7.2011, 22:23) а они... 18.7.2011, 21:41
spumer UPD:
Реакция венды на delete ptr перед return; .
... 18.7.2011, 22:47
Iron Bug Цитата(spumer @ 19.7.2011, 0:41) lexical_... 18.7.2011, 22:49
spumer Цитата(Iron Bug @ 19.7.2011, 1:49) дык, о... 18.7.2011, 22:52
Iron Bug Цитата(spumer @ 19.7.2011, 0:41) Тоже сна... 18.7.2011, 22:52
spumer Спасибо за ответы твои.
А утечками памяти я вскоре... 18.7.2011, 22:56
Iron Bug да, в деструкторе socket_ тоже нулевой.
в общем, ... 18.7.2011, 23:02![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 10:39 |