С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Блок try catch жрет память - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программирование задачи на двумерные и одномерные массивы с использованием шаблонов 4 http://www.cyberforum.ru/cpp-beginners/thread1010718.html
Само задание звучит так: "Из заданного на плоскости множества точек выбрать три различные точки так, чтобы разность между площадью круга, ограниченного окружностью, проходящей через эти три точки, ...
C++ Правильная инициализация ? Здравствуйте уважаемые программисты! Мне необходимо описать два класса, один ArrayOfInt - якобы одномерный массив, и SqArrayOfInt - уже двумерный массив, основанный на массиве ArrayOfInt. Моя... http://www.cyberforum.ru/cpp-beginners/thread1010700.html
Можно ли разобрать экзешник? C++
есть проблема, мне нужно где то найти исходный код файлового менеджера mucommander и несколько видоизменить его, поменять название и некоторые иконки. как я могу это сделать?
C++ Создать программу, которая выводит на экран символьную матрицу
создать прогу которая выводит на экран символьную матрицу. пример вывода. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C++ получить машинные результатный сравнить их со значениями соответствующей функции http://www.cyberforum.ru/cpp-beginners/thread1010687.html
помогите написать программу! данные ниже выражения представляют собой формулы приближенного вычисления различных функций по разложению их в ряд Тейлора в окрестностях указных точек. В последующем...
C++ Дана целочисленная прямоугольная матрица. Определить: 2. Дана целочисленная прямоугольная матрица. Определить: а)количество столбцов, не содержащих ни одного нулевого элемента; b) характеристикой столбца целочисленной матрицы назовем сумму модулей его... подробнее

Показать сообщение отдельно
Dreablin
5 / 5 / 1
Регистрация: 05.02.2010
Сообщений: 125
20.03.2015, 14:49
Цитата Сообщение от Tulosba Посмотреть сообщение
В частности в 42 строке у тебя создается в куче элемент, указатель на который ты добавляешь в vec_device_list. С листом тоже не понятно что дальше происходит, удаляешь ты потом его элементы или нет (снова нет кода).
С листом происходит следующее - его опрашивает в цикле другой поток. Т.е. он никогда не должен удаляться впринципе. Если устройство подключено, оно будет работать без перерывов. Механизм удаления предусмотрен, если устройсвто пропадает, но это делает другой поток. Больше того, Если в сети вообще нет устройств (т.е. в 42ю строку мы не попадаем). Расписав все Catch, как это было в самом начале:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//catch(EIdSocketError &E)  // Исключения сокетов
// {
//   ShowMessage("Ошибка:\n\""+E.Message+"\"");
// }
//catch(EIdHTTPProtocolException &E)
// {
//   // Можно получить код ответа сервера  HTTP  через E.ErrorCode
//      ShowMessage(String(E.ErrorCode)+" "+E.Message); break;
//  }
//catch(EIdException &E)// Другие исключения Indy
//  {
//   ShowMessage("Ошибка:\n\""+E.Message+"\"");
//  }
//catch(Exception &E)   // Другие НЕ Indy искключения
//  {
//  ShowMessage("Ошибка:\n\""+E.Message+"\"");
//  }

Вылетает ошибка "Connection time out". Ошибка возникает уже на 192.168.1.1 и если выходить через return, то смысла с этого потока?
И это весь код. Бежит по сети, находит - добавляет.
Я создал новый проект с таким кодом:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int tmp_device_num;
    bool is_device_known=false;
    UnicodeString tmp_data_str="";
    UnicodeString tmp_ip_str;
    UnicodeString tmp_request_str;
    UnicodeString tmp_str_to_comp="Emfit";
    UnicodeString tmp_dev_ID;
 
//  myDeviceResponse tmp_responce;
 
//  std::unique_ptr<TIdHTTP> IdHTTP1(new TIdHTTP);
    TIdHTTP *IdHTTP1 = new TIdHTTP;
 
    IdHTTP1->Request->UserAgent= "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0";
    IdHTTP1->Request->Accept= "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    IdHTTP1->Request->AcceptLanguage= "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3";
    IdHTTP1->Request->AcceptEncoding= "gzip, deflate";
//  IdHTTP1->Request->Connection= "keep-alive";
    IdHTTP1->Request->CacheControl= "max-age=0";
    IdHTTP1->ConnectTimeout = 100;
 
while (1)
 {
        for (size_t i = 1; i < 255; i++)
        {
            tmp_ip_str= base_ip_str+(UnicodeString)i ;
            tmp_request_str="http://"+tmp_ip_str+"/dvmh.cgi HTTP/1.1";
 
            IdHTTP1->Request->Host=tmp_ip_str;
            try {
              tmp_data_str = IdHTTP1->Get("http://192.168.1.149/dvmh.cgi HTTP/1.1");
            }
//          catch (...) {
//           ofs<< "исключение http" << std::endl;
//               устройство не найдено.
//          }
catch(EIdSocketError &E)  // Исключения сокетов
 {
   ShowMessage("Ошибка:\n\""+E.Message+"\"");
 }
catch(EIdHTTPProtocolException &E)
 {
   switch(E.ErrorCode)
      {
        ShowMessage(String(E.ErrorCode)+" "+E.Message); break;
      }
  }
catch(EIdException &E)// Другие исключения Indy
  {
     ShowMessage("Ошибка:\n\""+E.Message+"\"");
  }
catch(Exception &E)   // Другие НЕ Indy искключения
  {
    ShowMessage("Ошибка:\n\""+E.Message+"\"");
  }
 
catch(...)   // Другие искключения
  {
    ShowMessage("Ошибка");
  }
}
 
}


Он опрашиваетадрес, по которому точно нет устройства. Ошиба с таймаутом есть и память жрет.
Если поставить адрес, где устройство есть, память не жрет.
Проблема, значит в connection time out - где-то остается висеть соединение... Но где?...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.