Форум программистов, компьютерный форум CyberForum.ru

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

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

Показать сообщение отдельно
Dreablin
5 / 5 / 1
Регистрация: 05.02.2010
Сообщений: 124
19.03.2015, 16:21     Блок try catch жрет память
Не знаю, чем закончили ваши изыскания, но у меня похожая проблема.
Вот этот од жрет память.
C++
1
2
3
4
5
6
7
try {
                tmp_data_str = IdHTTP1->Get(tmp_request_str);
            }
            catch (...) {
             ofs<< "исключение http" << std::endl;
//               устройство не найдено.
            }
Если просто
C++
1
tmp_data_str = IdHTTP1->Get(tmp_request_str);
То не жрет, но и не работает- поток выключается.
внутри tmp_request_str находится строка "http://192.168.1.141/dvmh.cgi HTTP/1.1". - 141 меняется в цикле от 0 до 255
Смысл в том, что поток в цикле пробегает по сети и ищет определенные устройства.
Все равботает, но пропадает по 4 кб в 10-20 секунд.
Код, котоырй находится дальше никак не влияет на эту ситуацию, если его весь убрать, все равно память утекает.

На всяий случай весь код:
Кликните здесь для просмотра всего текста
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
    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;
 
    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(tmp_request_str);
            }
            catch (...) {
//               устройство не найдено.
            }
 
            if (tmp_data_str!="")   //ответ не пустой
            if (tmp_data_str[8] == tmp_str_to_comp[1])   //в сети могут быть и другие устройства
                {
                tmp_responce=Form1->DataParcer(tmp_data_str); // разберем ответ, что бы получить ID
 
                if (!Form1->FindDevByID(tmp_responce.dev_id))  // Если устройства с полученным ID нет в списке
                {
                    myDevice* tmp_dev = new myDevice;
                    tmp_dev->dev_ID=tmp_responce.dev_id;
                    tmp_dev->dev_ip=tmp_ip_str;
                    tmp_dev->unavailable_times=0;
                    vec_device_list.push_back(tmp_dev);
                }
 
 
 
        }
            tmp_data_str="";
            is_device_known=false;
        }
 
 
 
Synchronize(UpdateInfo);
    }
 
Текущее время: 15:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru