Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2015, 20:45   #1
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию При работе с компонентом IdHTTP(indy) возникает ошибка "Out of memory".

Здравствуйте.
Код:
void __fastcall MyThread::Execute()
{
CoInitialize(NULL);
 TIdHTTP* IdHTTP1= new TIdHTTP(NULL) ;
 int iter(0);
 Synchronize(&ProgressInit);
 IdHTTP1->AllowCookies= true;
 IdHTTP1->HandleRedirects = true;
 IdHTTP1->Request->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
 IdHTTP1->Request->Accept = "text/html";
 IdHTTP1->Request->AcceptLanguage = "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3";
 IdHTTP1->Request->Host = "www.google.ru";
 while(iter < 1000)
 {
	 try
	 {
		IdHTTP1->Get("http://www.programmersforum.ru/");
	 }
	 catch(EIdException &E)
	 {
		 Form1->Logs = "error";
		 Synchronize(&LogSaveToFile);
	 }
	 Sleep(1500);
	 Synchronize(&Log);
	 iter++;
	 Synchronize(&Progress);
 }
 delete IdHTTP1;
 Synchronize(&Caption);
CoUninitialize();
}
При возникновении ошибки(в режиме debug) компилятор не указывает ни на какую из строк кода.
В данном случае, если убрать строку с get запросом, то ошибка не появляется(она как-то рандомно появляется, то в начале работы программы, то по середине).
Так получается, что после появления данной ошибки, ее можно просто закрыть и программа продолжит свою работу.
Подкиньте, пожалуйста, мыслишек из-за чего это может быть. Сам я уже исчерпал свой мысленный потенциал. Спасибо.
Изображения
Тип файла: png error.png (33.2 Кб, 49 просмотров)
HelloWold вне форума Ответить с цитированием
Старый 16.09.2015, 21:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
CoInitialize(NULL);
А это зачем?
Цитата:
IdHTTP1->Get
Он у тебя никуда ничего не возвращает, это так и задумано?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2015, 21:55   #3
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Он у тебя никуда ничего не возвращает, это так и задумано?
Было изначально
Код:
sf->Text = IdHTTP1->Get("site.ru");
где sf - это стринг лист. Я решил убрать это, что бы исключить случай, образования ошибки при записи. Но, как оказалось, ошибка не в стринглисте.

А про
Код:
CoInitialize(NULL);
это мне когда-то советовали. Для чего не помню.

Кстати, попробовал закомментировать
Код:
CoInitialize(NULL);
и
CoUninitialize();
ошибка осталась.

Я не знаю, в чем проблемма
HelloWold вне форума Ответить с цитированием
Старый 17.09.2015, 09:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Для чего не помню.
Для INDY эти функции ни к чему.
а по теме сложно что-то сказать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2015, 12:24   #5
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Цитата:
а по теме сложно что-то сказать.
Мне бы хоть какую-нибудь теорию,что бы подтвердить и опровергнуть ее.
Просто сколько работал с этим компонентом, никогда такого не было.
HelloWold вне форума Ответить с цитированием
Старый 17.09.2015, 12:39   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да какая теория? У тебя вроде криминала нет. кроме конечно лишних инициализаций OLE и возвратов GET() запроса вникуда...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2015, 23:30   #7
HelloWold
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 21
По умолчанию

Stilet, возникает так же ошибка чтения по какому-то адресу.
Если после выскакивания ошибки Out of memory нажать continue, то как раз и появляется ошибка чтения по адресу(памяти).
Изображения
Тип файла: png error.png (25.1 Кб, 42 просмотров)
HelloWold вне форума Ответить с цитированием
Старый 18.09.2015, 08:38   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Надо полностью смотреть код. Возможно что-то не так ты делаешь с самим тредом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2015, 08:58   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от HelloWold Посмотреть сообщение
Если после выскакивания ошибки Out of memory нажать continue, то как раз и появляется ошибка чтения по адресу(памяти).
Все правильно, память не выделилась, т.е. имеем нулевой указатель ну а потом обращаемся по этому адресу, что приводит к ошибке.
waleri вне форума Ответить с цитированием
Старый 18.09.2015, 09:13   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
CoInitialize(NULL);
Не все индеские функции "понимают" NULL. Иногда, если явно задаёшь - false, прокатывает, но не панацея.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NOD 32 выругался при заходе в тему "Литература в помощь при работе с базами данных", что в разделе "БД в Delphi" Вадим Мошев О форуме и сайтах клуба 4 09.11.2014 10:14
Ошибка при работе с БД: "Нераспознаваемый формат базы данных" lutdan БД в Delphi 7 21.03.2013 09:47
Ошибка "too many consecutive exceptions" при работе программы: как найти? DimychX Общие вопросы Delphi 11 22.06.2011 21:02
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
Проблема при работе с Indy 10 (idHttp) Lauri Работа с сетью в Delphi 3 04.11.2010 19:36